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

%APPDATA%\Vendor\Settings.ini

Я создал несколько консольных / служебных приложений, которые используют это и работают очень хорошо. Однако теперь я пытаюсь использовать аналогичный подход через свое веб-приложение ASP.NET MVC, и файл настроек, похоже, никогда не записывается!

Обычно, если приложение работает под моим acconut, например, файл будет записан где-то вроде:

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

Поэтому я подумал, что если бы веб-сайт AppPool работал под той же учетной записью, файл был бы сохранен в том же месте ... Однако он никогда не появляется. Учетная запись - это учетная запись администратора, работающая под Windows server 2003.

Любые идеи?

Спасибо.

1
James 22 Фев 2010 в 15:40

3 ответа

Лучший ответ

Не удалось найти решение этой проблемы, поэтому я решил разработать локальную службу WCF (которая создавала бы файл настроек по правильному пути к каталогу) и просто обратился к нему через свое веб-приложение.

0
James 9 Мар 2010 в 13:59

Вы проверили, создан ли файл настроек в папке App_Data в веб-приложении? Если нет, не могли бы вы поместить туда существующий файл настроек и посмотреть, использует ли он его?

1
tvanfosson 22 Фев 2010 в 15:45
Проверьте папку App_Data, там ничего не записывается. Странно то, что это отлично работает на моей машине Dev, когда я запускаю Visual Studio, работающую под управлением Windows 7 x64, которая, следовательно, является IIS7.0.
 – 
James
22 Фев 2010 в 15:54
Работает на вашем компьютере разработчика, потому что веб-сервер работает с вашими учетными данными. Вы пытались предоставить файл настроек в App_Data и проверить, использует ли он его?
 – 
tvanfosson
22 Фев 2010 в 16:33
Да, попытался разместить файл настроек в App_Data, но никогда не работал. Куда будет обращаться этот конкретный каталог при работе через веб-сайт? Это обычно папка App_Data? Возможно, мне следует просто вручную создать файл настроек и поместить его в ожидаемую папку, а не полагаться на DLL, чтобы сделать это за меня.
 – 
James
22 Фев 2010 в 17:24
Я никогда не использовал его с сопоставлением переменных оболочки, обычно, когда я использую папку App_Data, я разрешаю ее с помощью Server.MapPath ("~ / App_Data / ..."). Вы можете попробовать создать учетную запись службы на веб-сервере, поместить ее в группу рабочих процессов, использовать ее для запуска своего веб-сайта и поместить файл настроек в его папку AppData - возможно, вам потребуется один раз войти в систему, чтобы создать структуру.
 – 
tvanfosson
22 Фев 2010 в 18:03
Хм, странно то, что я запускаю веб-сайт под своим логином для веб-сервера, который имеет всю структуру каталогов, но файл настроек не записывается. Однако, если я помещу файл настроек в каталог вручную, он привыкнет. Кажется, проблема с веб-сайтом, отображающим каталог% APPDATA%.
 – 
James
22 Фев 2010 в 18:11

Дело не в учетной записи webpool, а в учетной записи гостя.

Перейдите к свойствам вашего сайта в IIS, Directory Security и в анонимном доступе нажмите кнопку Edit, там вы увидите, какая учетная запись используется, когда кто-то обращается к вашему сайту.

0
thitemple 22 Фев 2010 в 18:38
@VinTem, в настоящий момент я не разрешаю anonymous доступ к сайту, он установлен на Integrated Windows Authentication. У меня есть журнал, который проверяет, под какой учетной записью работает веб-сайт, и это учетная запись, которая аутентифицируется. Тем более необычно то, что настройки записываются по правильному пути.
 – 
James
22 Фев 2010 в 18:59