У меня есть два очень похожих приложения ASP Classic, которые используют аутентификацию Windows и работают на одном компьютере для разработки (Windows 7 / IIS 7.5).
Они существуют уже много лет и «путешествовали» со мной, когда я годами модернизировал ПК. Один работает нормально, а другой нет - я не могу сказать наверняка, работал ли он когда-либо на этом конкретном ПК, так как я давно не работал с ним, но я считать он работал в недавнем прошлом.
Моя проблема в том, что когда я просматриваю сайт, я получаю следующую ошибку:
HTTP Error 500.19 - Internal Server Error
The requested page cannot be accessed because the related configuration data for the page is invalid
Cannot read configuration file due to insufficient permissions
Любопытно то, что он утверждает, что у него недостаточно прав для доступа к web.config, но нет web.config!
В настройках приложения, если мы тестируем соединение, выдается ошибка:
Authorization: Application pool identity cannot access path
Насколько я могу судить, оба приложения настроены одинаково:
Я в тупике! Любые идеи?
РЕДАКТИРОВАТЬ: Полная информация об ошибке:
**Detailed Error Information**
Module IIS Web Core
Notification BeginRequest
Handler Not yet determined
Error Code 0x80070005
Config Error Cannot read configuration file due to insufficient permissions
Config File \\?\D:\Projects\Scope2\web.config
Requested URL http://myserver:80/scope2/
Physical Path D:\Projects\Scope2\
Logon Method Not yet determined
Logon User Not yet determined
Лучшая догадка:
Пул приложений, похоже, испытывает трудности с чтением файла web.config в каталоге или одной из его подпапок. Разрешения NTFS, вероятно, препятствуют этому.
Пул приложений запускается как идентификатор пула приложений, настроенный в свойствах пула приложений. Эта учетная запись должна иметь возможность перечислять все папки на веб-сайте, чтобы читать файлы web.config, которые там находятся.
IIS 7.x хранит свою конфигурацию в файлах web.config - если какая-либо подпапка закрывает доступ к учетной записи App Pool, у вас возникнут трудности.
Я думаю, что вторая часть сообщения указывает на то, что текущий идентификатор пула приложений не имеет доступа для чтения к папке, которую он там называет.
Если вы предоставите, например, «Все»: прочтите ту папку, на которую он ссылается, если ошибка вернется, она, вероятно, назовет другую папку.
Вы можете разрешить IIS_IUSRS доступ для чтения ко всем папкам вашего веб-сайта, но это довольно широкое решение; что вам действительно нужно сделать, так это предоставить вашей учетной записи пула приложений доступ для чтения ко всему содержимому веб-сайта (и вложенным папкам). (и только чтение (никогда не изменяйте и не пишите), если вы не являетесь очень особый случай (предположим, что это не так))
В качестве альтернативы вы можете установить свойство allowSubdirConfig на уровне сайта, чтобы запретить поиск файлов web.config в подпапках нижнего уровня: http://msdn.microsoft.com/en-us/library/ms689463.aspx