Проблема исключительно с использованием проверки подлинности Windows в бета-версии ASP.NET MVC 3
Я создаю сайт Intranet в бета-версии ASP.NET MVC 3 и хотел бы использовать исключительно проверку подлинности Windows. Кроме того, я хотел бы использовать Visual Studio Development Server в VS2010.
Я изменил файл web.config по умолчанию, чтобы удалить все ссылки на проверку подлинности форм и переключился на это:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
Однако, когда я запускаю свой сайт и получаю страницу по умолчанию, я получаю этот ответ:
HTTP/1.1 302 Found
Server: ASP.NET Development Server/10.0.0.0
Date: Tue, 02 Nov 2010 14:05:19 GMT
X-AspNet-Version: 4.0.30319
Location: /Account/Login?ReturnUrl=%2f
Cache-Control: private
Content-Type: text/html; charset=utf-8
Content-Length: 145
Connection: Close
Что приводит к этому сообщению в моем браузере:
Ошибка сервера в приложении "/".
Ресурс не найден.
Описание: HTTP 404. Ресурс вы ищете (или зависимостей) могли быть удалены, изменило свое название или Временно недоступен. пожалуйста просмотрите следующий URL-адрес и убедитесь, что что оно написано правильно.
Запрошенный URL:/Account/Login
Информация о версии: Microsoft.NET Версия Framework: 4.0.30319; ASP.NET Версия: 4.0.30319.1 Версия: 4.0.30319.1
Если я выбираю "NTLM Authentication" в свойствах проекта в разделе "Использовать Visual Studio Development Server", то я правильно получаю этот ответ на connect:
HTTP/1.1 401 Unauthorized Server
ASP.NET Development Server/10.0.0.0
Date: Tue, 02 Nov 2010 14:07:37 GMT
Content-Length: 1211
WWW-Authenticate: NTLM
Но тогда, когда я аутентифицируюсь, я получаю 302
Я думаю, что это просто вопрос очистки значения по умолчанию, но я не уверен ( "/Account/Login" не появляется нигде в моих файлах web.config). Если я удалю часть "deny", тогда все будет работать отлично, за исключением того, что я не получу аутентифицированного Принципала и фактически остаюсь анонимным.
Я полагаю, что это использовалось для работы в ASP.NET MVC 2 и VS2008, просто изменив режим аутентификации на Windows, однако, похоже, это не работает так.
Я знаю, что, вероятно, я пропустил что-то основное. Спасибо!
Примечание. Этот вопрос аналогичен вопросу "Проблема ограничения анонимного доступа к сайту ASP.Net MVC", но отличается в что я хочу исключительно использовать проверку подлинности Windows.
Ответы
Ответ 1
У меня была точно такая же проблема. Оказывается, произошла смена MVC 3 (довольно хорошо скрытая), которая по умолчанию автоматически включала аутентификацию форм, чтобы отключить ее, добавив следующую строку в ваш корневой файл Web.config под ключом appSettings
..
<add key="autoFormsAuthentication" value="false" />
Надеюсь, что это поможет!
Ответ 2
FYI, если это поможет другим: в моем случае мне нужно было добавить <add key="enableSimpleMembership" value="false">
, чтобы исправить проблему, и <add key="autoFormsAuthentication" value="false" />
не требовалось. Я также нашел этот пост в блоге очень полезным в качестве объяснения http://www.codeproject.com/Articles/292149/The-resource-cannot-be-found-Account-Login?msg=4092212#xx4092212xx
Любые мысли о потенциальных последствиях/побочных эффектах этого исправления?
Также я разочарован, что эта проблема еще не была исправлена через ms через год +.
спасибо.
Ответ 3
Проверьте, есть ли у вас файл WebMatrix.Data.dll в корзине. http://blog.fujiy.net/post/aspnet-mvc-windows-authentication-redirecionando-pro-login, http://blogs.catapultsystems.com/rhutton/archive/2012/07/20/mvc3-with-windows-authentication-redirected-to-accountlogin.aspx