C # 2008 SP1
Korzystam z poniższego kodu:
dt.ReadXml("%AppData%\\DateLinks.xml");
Dostaję jednak wyjątek wskazujący lokalizację, z której działa moja aplikacja:
Nie można znaleźć części ścieżki „D: \ Projekty \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml”.
Myślałem, że %AppData%
powinien znaleźć względną ścieżkę. Gdy wchodzę do systemu Start|Run|%AppData%
Windows, Eksplorator zabiera mnie do tego katalogu.
Nie mogę podać pełnej ścieżki, ponieważ użytkownik jest inny na każdym komputerze klienckim.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
zwraca mi pusty ciąg (IIS 7, VS 2011). Problem rozwiązany za pomocą rozwiązania Simon_Weaver - mapowanie za pomocąMapPath
.Ścieżka jest inna, jeśli używasz ASP.NET.
Nie mogłem znaleźć żadnych wartości „SpecialFolder”, które wskazywałyby na / App_Data dla ASP.NET.
Zamiast tego musisz to zrobić:
(Uwaga: nie potrzebujesz właściwości „Current” w kontrolerze MVC)
Jeśli istnieje inny bardziej „abstrakcyjny” sposób,
App_Data
chciałbym się dowiedzieć, jak to zrobić.źródło
HostingEnvironment.MapPath(@"~/App_Data")
jest lepszy i działa zarówno w kontekście MVC / WebAPI, jak i WCF, w których nie ma HttpContext - ale nie ma pewności co do rdzeniaBEST sposobem korzystania katalog AppData, IS w użyciu
Environment.ExpandEnvironmentVariable
metody.Powody:
Przykłady:
Pamiętaj, że niektórzy użytkownicy piszą
%AppData%
, niektórzy,%appdata%
a niektórzy z%APpData%
nich nie chcą:Jeśli zmienna środowiskowa nie jest ustawiona, to nie twoja wina (poza tym, kiedy JEST ). Zwykle nie mówię ludziom, żeby nie wymyślali na nowo koła, ale po raz pierwszy poszedłem w inną stronę i zdałem sobie sprawę, że to zły pomysł.
źródło
path
zmiennych :)Environment.ExpandEnvironmentVariable
jest najlepsze, gdy trzeba po prostu rozwinąć, niezależnie od tego, które zmienne env mogą znajdować się w ciągu ścieżki.Możesz także użyć
rozwinąć
%AppData%
zmienną.źródło
W .net2.0 możesz użyć zmiennej
Application.UserAppDataPath
źródło
Nie sądzę, aby umieszczanie% AppData% w takim ciągu działało.
próbować
źródło
Chciałem tylko udostępnić inny sposób dostępu do folderu „App_Data” w mojej aplikacji mvc na wypadek, gdyby ktoś tego potrzebował.
źródło
Działa to dla mnie w aplikacji konsolowej -
źródło
W przypadku ASP.NET
Load User Profile
ustawienie należy ustawić w puli aplikacji, ale to nie wystarczy. Istnieje ukryte ustawienie o nazwiesetProfileEnvironment
in\Windows\System32\inetsrv\Config\applicationHost.config
, które z jakiegoś powodu jest domyślnie wyłączone, a nie włączone zgodnie z opisem w dokumentacji . Możesz zmienić wartość domyślną lub ustawić ją w puli aplikacji. Wszystkie metody wEnvironment
klasie zwrócą wówczas prawidłowe wartości.źródło