在工作中,我们被迫进行硬件更新,我们从带有 VS 2013 和 IIS Express 6 的 Windows 7 机器转到带有 VS 2017 和 IIS Express 10 的 Windows 10 机器。问题是 Windows 身份验证拒绝工作。我得到一个 401.2 - Unauthorized 并解释了“无效的身份验证标头”。
我检查了 web.config 和 web 项目的属性,它们是正确的。我已经修改了项目中 .vs 文件夹中的 applicationhost.config 文件以启用 windows 身份验证。我什至检查了文件的权限,以确保经过身份验证的用户拥有正确的权限。这些都没有奏效。
这一切在 IIS Express 6 中运行良好。微软在 IIS Express 10 中做了什么改变,这一切都搞砸了?
编辑:必须手动输入这些东西,因为我无法从开发机器中移动代码。
网络配置:
<system.web>
<customErrors mode="off"/>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5" />
<authentication mode="Windows" />
<authorization>
<allow users="*" />
</authorization>
</system.web>
如果您想要 web.config 的任何其他部分,请询问我。
至于 ApplicationHost.config,它基本上是 VS2017 创建的任何东西,因为这是一台新机器,并且项目中没有现有的机器。我尝试进行的更改:
<windowsAuthentication enabled="true">
<anonymousAuthentication enabled="false" userName="">
<section name="windowsAuthentication" overrideModeDefault="allow">
一个额外的数据点:应用程序在 Firefox 上运行。我可以正常登录到运行 IIS 8.5 的测试服务器,但无法访问 IIS Express 上的应用程序。
从那以后,我创建了一个新的 MVC 应用程序并运行它。它在 IE 中运行良好,但不会对来自 Firefox 和 Edge 的用户进行身份验证。
编辑:发现 Edge 不支持本地主机上的 Windows 身份验证:https ://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4776775/
仍然需要让它与 Firefox 一起工作。
再次编辑:所以,我想我知道发生了什么。我有两个用户帐户:普通用户帐户和具有更多权限的管理员帐户。我在 Windows 7 下所做的是,当我登录到我的常规帐户时,我在我的管理员帐户下运行 VS。然后我可以运行我的网络应用程序并使用我的管理员帐户登录网站。这似乎不再起作用了。我可以让我的应用程序工作的唯一方法是在我的管理员帐户下运行它。否则,Windows 身份验证将不起作用。安全方面,这被打破了,我想找到一个更好的解决方案。