C # 2008 SP1
Я использую код ниже:
dt.ReadXml("%AppData%\\DateLinks.xml");
Тем не менее, я получаю исключение, которое указывает на место, откуда запускается мое приложение:
Не удалось найти часть пути 'D: \ Projects \ SubVersionProjects \ CatDialer \ bin \ Debug \% AppData% \ DateLinks.xml'.
Я думал, что %AppData%
должен найти относительный путь. Когда я иду, Start|Run|%AppData%
Windows Explorer берет меня в этот каталог.
Я не могу указать полный путь, так как пользователь отличается на каждой клиентской машине.
Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
возвращает пустую строку для меня (IIS 7, VS 2011). Проблема решена с помощью Simon_Weaver решение - отображение с использованиемMapPath
.Путь другой, если вы говорите ASP.NET.
Я не смог найти ни одного значения «SpecialFolder», которое указывало бы на / App_Data для ASP.NET.
Вместо этого вам нужно сделать это:
(Примечание: вам не нужно свойство Current в контроллере MVC)
Если есть еще один «абстрактный» способ получить,
App_Data
хотел бы услышать, как.источник
HostingEnvironment.MapPath(@"~/App_Data")
лучше и работает в контекстах MVC / WebAPI и WCF, где нет HttpContext - но не уверен насчет ядра »Лучший способ использовать каталог AppData, IS , чтобы использовать
Environment.ExpandEnvironmentVariable
метод.Причины:
Примеры:
Помните, что некоторые пользователи типа
%AppData%
, некоторые%appdata%
и некоторые, которые%APpData%
вы не хотите в конечном итоге:Если переменная окружения не установлена, это не ваша вина ( к тому же, когда он IS ). Я обычно не говорю людям не изобретать велосипед, но после того, как я пошел другим путем, я понял, что это плохая идея.
источник
path
переменных :)Environment.ExpandEnvironmentVariable
лучше всего, когда вам просто нужно расширить, независимо от того, какие env переменные могут быть в строке пути.Вы также можете использовать
расширить
%AppData%
переменную.источник
В .net2.0 вы можете использовать переменную
Application.UserAppDataPath
источник
Я не думаю, что размещение% AppData% в такой строке будет работать.
пытаться
источник
Просто хотел поделиться другим способом доступа к папке «App_Data» в моем приложении MVC на тот случай, если это кому-то понадобится.
источник
Это работает для меня в консольном приложении -
источник
Для ASP.NET этот
Load User Profile
параметр должен быть установлен в пуле приложений, но этого недостаточно. Существует скрытый параметр с именемsetProfileEnvironment
in\Windows\System32\inetsrv\Config\applicationHost.config
, который по некоторым причинам отключен по умолчанию, а не включен, как описано в документации . Вы можете изменить значение по умолчанию или установить его в своем пуле приложений. Все методыEnvironment
класса будут возвращать правильные значения.источник