Windows 2012/IIS 8 + ASP.NET MVC Приложение 403.14 (Запрещено) - веб-сервер настроен так, чтобы не отображать содержимое
У меня очень простое приложение MVC 4, которое я пытаюсь развернуть на сервере Windows 2012.
Непоследовательно, при переходе к корню веб-приложения (http://localhost/app
), он возвращает 403.14-Forbidden
:
Подробная информация об ошибке:
Module: DirectoryListingModule
Notification: ExecuteRequestHandler
Handler: StaticFile
Error Code: 0x00000000
Requested URL: http://localhost:80/test1/
Physical Path: c:\apps\test1\
Logon Method: Negotiate
Веб-приложение:
- Это очень ванильный шаблон для интранета VS2012 MVC4 - с надписью, чтобы доказать, что все работает.
- работает в интегрированном пуле приложений v4.0
- настройка для использования аутентификации Windows
- пулу приложений назначен пользовательский идентификатор AD (чтобы он мог получить доступ к серверу SQL)
- удостоверение пула приложений имеет разрешения на чтение в папке c:\apps\test1, в которой он запущен
- Это приложение MVC4, нацеленное на.NET 4.0 в настоящее время. В приложении MVC4 нет документа по умолчанию (например, default.aspx), так как его не должно быть.
- Я не хочу включать списки каталогов (так как это не настоящая ошибка).
- Установлено: роли / веб-сервер (IIS) / разработка приложений / (расширяемость.NET 4.5, инициализация приложений, ASP.NET 4.5, расширения ISAP, фильтры ISAPI, протокол WebSocket)
- Работает локально на моей машине в IISExpress на Windows 8
- Настроил в web.config:
<modules runAllManagedModulesForAllRequests="true" />
- предварительно компилируется во время публикации
Когда я изменяю предварительно скомпилированную опцию на false
веб-приложение не выходит из строя (по крайней мере, в моем тестировании оно работает стабильно).
Причина, по которой я говорю, что это противоречиво, состоит в том, что я видел, как это работает, затем я опубликовал, и ошибка возвращается. Я не могу найти образец проблемы (и сейчас я не смог заставить его работать снова, вообще).
403 возвращается из локального или удаленного веб-браузера.
У меня возникли проблемы с поиском решения, которое не предназначено для более старых версий Windows (например, предложения переустановить ASP.NET, который не будет работать в Windows 2012).
Я действительно не знаю, что еще попробовать.
3 ответа
Просто заметил "пользовательскую идентификацию AD" там.
- убедитесь, что новый пользователь действительно имеет права на чтение пути файловой системы, даже если там ничего нет.
- убедитесь, что новый пользователь находится в группе приложений IIS, чтобы он мог общаться с метабазой
- Проверьте, настроена ли аутентификация в режиме ядра, в зависимости от этого:
- (если так) проверьте, что setspn не имеет дополнительных записей
- (если нет) рассмотрите возможность увеличения NTLM над Kerberos в вашем списке согласования аутентификации, чтобы посмотреть, решит ли это проблему.
2012 год достаточно новый, и я не знаю его причуд ошибок, но это довольно хорошие места для начала, когда запрет 403.
У меня та же проблема. Я искал столько времени и делал все инструкции по этой ссылке. Я настроил свое приложение как ваше; но это не работает вообще. Наконец, я обнаружил, что: Когда я выбираю прекомпиляцию во время публикации, я должен установить AssemblyCulture - пустую строку (в файле Properties/AssemblyInfo.cs) Например:
[Assembly: AssemblyCulture("")]
Если я установлю как показано ниже, это не сработает
[сборка: AssemblyCulture("fr-FR")]
У меня была похожая проблема, и мой ответ был таким:
http://technet.microsoft.com/en-us/library/cc731598
У меня было добавление IP-адреса машины, обращающейся к сервису. Я не знал, что это было включено.