asp.net-mvc - 无法通过本地 IIS 进行 Windows 身份验证

标签 asp.net-mvc iis windows-authentication ntlm http-status-code-401

因此,我使用 Intranet 模板创建了一个新的 ASP.NET MVC 项目。 web.config 包含适当的值(例如 <authentication mode="windows"/> )。

如果我使用 VS Web 服务器启动 Web 应用程序,一切看起来都很好 - 页面显示我的 Windows 域和用户名等等。然而,这在 Opera 和 Safari 以及 IE 和 FF 中都有效,这对我来说它根本不使用 Windows 身份验证(因为据我所知,这在除 IE/FF 之外的任何浏览器中都不起作用)。

下一步是让它通过本地 IIS 运行。我创建一个主机文件条目,将 www.mysite.mydomain 指向 127.0.0.1。因此,在 IIS 中,我创建了绑定(bind)到 www.mysite.mydomain 的网站,并启用 Windows 身份验证并禁用匿名身份验证。

我已设置 IE 和 FF 以启用 Windows 身份验证,如下所示:

IE

  1. 将 URL 添加到 Intranet 群组
  2. 确保在高级设置中启用 Windows 身份验证

FF

将“www.mysite.mydomain”放入network.automatic-ntlm-auth.trusted-uris配置设置中。

但是当我在 IE/FF 中拨号 www.mysite.mydomain 时,我收到登录提示。有趣的是,即使我在此处输入 Windows 登录信息,它仍然失败并再次显示登录提示。

我们这里没有事件目录,但我的理解是它应该可以与本地帐户一起正常工作。

我想不出还有什么我需要做的。有什么建议吗?

编辑:我们最近改用 Active Directory,但问题仍然存在。

编辑:当我取消登录提示时,我会进入“IIS 7.5 详细错误”页面,其中包含以下信息:

HTTP Error 401.2 - Unauthorized You are not authorized to view this page due to invalid authentication headers.**

最佳答案

您必须将主机文件中指定的域列入白名单才能使 Windows 身份验证正常工作:

  1. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
  2. 在注册表编辑器中,找到以下注册表项:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
  3. 右键单击“参数”,单击“新建”,然后单击“DWORD(32 位)值”。
  4. 输入 DisableStrictNameChecking 并按 Enter。
  5. 双击 DisableStrictNameChecking 注册表值,然后在“值数据”框中键入 1,然后单击“确定”
  6. 在注册表编辑器中,找到并单击以下注册表项: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  7. 右键单击 MSV1_0,指向“新建”,然后单击“多字符串值”。
  8. 键入 BackConnectionHostNames,然后按 Enter。
  9. 右键单击BackConnectionHostNames,然后单击“修改”。
  10. 在“值数据”框中,键入主机名或本地计算机上站点的主机名,然后单击“确定”。
  11. 退出注册表编辑器,然后重新启动 IISAdmin 服务。

注意: 此答案的原始 Microsoft 知识库链接已损坏并已被删除。 This article提供了设置DisableStrictNameChecking 的说明。

关于asp.net-mvc - 无法通过本地 IIS 进行 Windows 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7387156/

相关文章:

asp.net-mvc - 无法在 Windows 10 中使用命令行安装网站 msi

c# - ASP.Net Core 401 中的 SignalR 未经授权

javascript - 使用 JavaScript 索引变量访问 ViewBag 数组项

c# - 当数据库只有 1 个小数位 C# MVC Postgres 时,DropDownList 显示 4 个小数位

asp.net - Tortoise SVN 操作后文件丢失 IIS_IUSRS 权限

.net - 使用 system.windows.forms.webbrowser 进行 Windows 身份验证

wpf - 如何在 WPF 中使用 Windows 身份验证?

.net - 如何使用包含辅助方法的 .cshtml 文件创建 nuget 包

asp.net-mvc - 如何在 ASP.NET MVC 中进行成员资格?

asp.net-mvc - 为什么 IIS 不清理池回收时的旧工作进程 (w3wp.exe),导致网站内存不足异常?