C # 2008 SP1
Saya menggunakan kode di bawah ini:
dt.ReadXml("%AppData%\\DateLinks.xml");
Namun, saya mendapatkan pengecualian yang menunjuk ke lokasi dari mana aplikasi saya berjalan:
Tidak dapat menemukan bagian dari jalur 'D: \ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml'.
Saya pikir %AppData%
seharusnya menemukan jalan relatif. Ketika saya pergi Start|Run|%AppData%
windows explorer membawa saya ke direktori itu.
Saya tidak bisa memasukkan path lengkap, karena pengguna berbeda pada setiap mesin klien.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
mengembalikan string kosong untuk saya (IIS 7, VS 2011). Masalah dipecahkan menggunakan solusi Simon_Weaver - pemetaan menggunakanMapPath
.Path berbeda jika Anda berbicara ASP.NET.
Saya tidak dapat menemukan nilai 'SpecialFolder' yang menunjuk ke / App_Data untuk ASP.NET.
Sebaliknya, Anda perlu melakukan ini:
(Catatan: Anda tidak memerlukan properti 'Lancar' di Kontroler MVC)
Jika ada cara lain yang lebih 'abstrak' untuk mencapai
App_Data
akan senang mendengar bagaimana.sumber
HostingEnvironment.MapPath(@"~/App_Data")
lebih baik dan berfungsi dalam konteks MVC / WebAPI dan WCF di mana tidak ada HttpContext - tetapi tidak yakin tentang inti 'Cara TERBAIK untuk menggunakan direktori AppData, IS untuk menggunakan
Environment.ExpandEnvironmentVariable
metode.Alasan:
Contoh:
Ingat beberapa jenis pengguna
%AppData%
, beberapa%appdata%
dan beberapa%APpData%
Anda tidak ingin berakhir dengan:Jika variabel lingkungan tidak disetel, itu bukan kesalahan Anda (selain saat itu IS ). Saya biasanya tidak memberitahu orang untuk tidak menemukan kembali roda tetapi setelah saya pertama kali pergi ke arah lain dan menyadari bahwa itu adalah ide yang buruk.
sumber
path
variabel Anda :)Environment.ExpandEnvironmentVariable
adalah yang terbaik saat Anda hanya perlu melakukan ekspansi terlepas dari env vars mana yang mungkin ada di string path.Anda juga bisa menggunakan
untuk memperluas
%AppData%
variabel.sumber
Di .net2.0 Anda bisa menggunakan variabel
Application.UserAppDataPath
sumber
Saya tidak berpikir menempatkan% AppData% dalam string seperti itu akan berhasil.
mencoba
sumber
Hanya ingin berbagi cara lain mengakses folder 'App_Data' di aplikasi mvc saya jika seseorang membutuhkan ini.
sumber
Ini berfungsi untuk saya dalam aplikasi konsol -
sumber
Untuk ASP.NET,
Load User Profile
pengaturan perlu diatur pada kumpulan aplikasi tapi itu tidak cukup. Ada pengaturan tersembunyi bernamasetProfileEnvironment
dalam\Windows\System32\inetsrv\Config\applicationHost.config
, yang karena alasan tertentu dimatikan secara default, bukan pada seperti yang dijelaskan dalam dokumentasi . Anda dapat mengubah default atau mengaturnya di kumpulan aplikasi Anda. Semua metode diEnvironment
kelas kemudian akan mengembalikan nilai yang tepat.sumber