ASP.NET MVC - Как обрабатываются переменные среды Windows? - PullRequest
1 голос
/ 23 февраля 2010

Этот вопрос также связан с другим моим вопросом ASP.NET MVC - Пути к веб-сайтам .

У меня есть сторонний компонент, в котором жестко заданы пути к каталогам, скомпилированные в сборку. Пример одного из путей:

%APPDATA%\Vendor\Product\settings.ini

Так что, если я создаю консольное приложение / службу Windows и запускаю его под своей учетной записью на своем компьютере (под Windows Server 2003) и сохраняю эти настройки, они сохраняются в следующем каталоге:

C:\Documents and Settings\James\Application Data\Vendor\Product\settings.ini

Однако, если я попытаюсь сделать то же самое с помощью моего веб-приложения, этого не произойдет.

Я пытаюсь выяснить, где отображается переменная окружения %APPDATA% при использовании в веб-приложении ASP.NET MVC. Я попытался поместить каталог Vendor\Product\ в мой каталог App_Data, как это было предложено кем-то из другого вопроса .... это не сработало.

Я подумал, что, возможно, сохранение просто не удастся, однако, исключение не выдается, строка обрабатывается, как обычно.

Ответы [ 2 ]

1 голос
/ 23 февраля 2010

Я предполагаю, что он будет использовать настройку переменных среды для службы, в которой работает ASP.Net или AppPool.

Вы пытались установить переменную среды в вашем приложении, прежде чем использовать компонент?

0 голосов
/ 23 февраля 2010

FiguringOutAEnvironmentVariableContent

Привет Джеймс,

Нолдорин недавно опубликовал хорошее РЕШЕНИЕ .

Ссылаясь на автора ...

Чтобы получить каталог AppData, лучше всего использовать метод GetFolderPath:

Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)

% AppData% - это переменная среды, и они нигде не раскрываются автоматически в .NET, хотя для этого можно явно использовать метод Environment.ExpandEnvironmentVariable. Тем не менее, я настоятельно рекомендую вам использовать GetFolderPath, потому что, как указывает Йоханнес Россел в комментарии,% AppData% может не быть установлен при определенных обстоятельствах.

Наконец, чтобы создать путь, как показано в вашем примере:

var fileName = Path.Combine(Environment.GetFolderPath(
Environment.SpecialFolder.ApplicationData), "DateLinks.xml")

Надеюсь, это поможет вам.

БОНУС: <%= System.Environment.GetEnvironmentVariable("MyVariable") %>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...