【问题标题】:Problem exclusively using Windows Authentication in ASP.NET MVC 3 Beta在 ASP.NET MVC 3 Beta 中专门使用 Windows 身份验证的问题
【发布时间】:2011-05-03 23:21:25
【问题描述】:

我在 ASP.NET MVC 3 Beta 中创建一个 Intranet 站点,并希望专门使用 Windows 身份验证。另外,我想在VS2010中使用Visual Studio Development Server。

我修改了默认的 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 框架版本:4.0.30319; ASP.NET 版本:4.0.30319.1 版本:4.0.30319.1

如果我在“使用 Visual Studio 开发服务器”下的项目属性中选择“NTLM 身份验证”,那么我在连接时会正确收到此回复:

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 文件中的任何位置)。如果我删除“拒绝”部分,那么一切正常,只是我没有获得经过身份验证的委托人并且有效地保持匿名。

我相信这曾经在 ASP.NET MVC 2 和 VS2008 中工作,只需将身份验证模式更改为 Windows,但它似乎不再那样工作了。

我知道我可能缺少一些基本的东西。谢谢!

注意:本题与“Problem restricting anonymous access to an ASP.Net MVC Site”题类似,不同之处在于我想独占使用Windows身份验证。

【问题讨论】:

  • 在 MVC3 RTM 中,这似乎有帮助 &lt;add key="enableSimpleMembership" value="false"/&gt; source

标签: visual-studio-2010 asp.net-mvc-3


【解决方案1】:

我遇到了完全相同的问题。事实证明,MVC 3(也隐藏得相当好)有一个更改,默认情况下会自动启用 Forms 身份验证,为了禁用它,将以下行添加到您的根 Web.config 文件中,在 appSettings 键下.. .

<add key="autoFormsAuthentication" value="false" />

希望有帮助!

【讨论】:

  • 谢谢!我以前没有听说过这个“功能”。禁用它修复了它,现在运行良好。再次感谢!
  • 没问题 - 我花了一天时间才找到那个!
  • Phil Haack (@haacked) 通知我,此问题已在发行说明中并将修复:asp.net/learn/whitepapers/mvc3-release-notes
  • 根据 Jeff 评论的文档 - 我还必须添加此密钥才能使其正常工作 - &lt;add key="enableSimpleMembership" value="false" /&gt;
  • Visual Studio/IIS/IIS Express 用户注意事项:Web 服务器也必须配置为 Windows 身份验证。它不仅仅依赖于 web.config 文件。
【解决方案2】:

仅供参考,以防这对其他人有所帮助:在我的情况下,我只需添加 &lt;add key="enableSimpleMembership" value="false"&gt; 即可解决问题,并且不需要 &lt;add key="autoFormsAuthentication" value="false" /&gt;。我还发现这篇博文作为解释非常有用http://www.codeproject.com/Articles/292149/The-resource-cannot-be-found-Account-Login?msg=4092212#xx4092212xx

对此修复的潜在后果/副作用有何想法?

我也很失望这个问题在一年后还没有被 ms 修复。

谢谢。

【讨论】:

  • 我也很失望。正如你提到的,我只需要添加&lt;add key="enableSimpleMembership" value="false"&gt;。 +1 提供链接 :)
  • 本文的关键方面与可部署的依赖关系有关!!
  • 谢谢!这似乎也为我解决了!
  • 这也是给我的!非常感谢 在 VS2012 Update 4 中创建默认 MVC4 项目时出现问题。我猜这与 2012 最新版本中包含的较新模板有关。
【解决方案3】:

【讨论】:

  • 键对我没有任何作用,但删除所有 WebMatrix*.dll 文件就像一个魅力!谢谢!!!
猜你喜欢
  • 2017-08-24
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 2011-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多