在工作中,我们被迫进入硬件更新,我们从带有VS 2013和IIS Express 6的Windows 7盒子转到带有VS 2017和IIS Express 10的Windows 10盒子。问题是Windows身份验证拒绝工作。我得到了一个401.2 - 未经授权的解释“无效的身份验证标头”。
我检查了web.config和web项目的属性,它们是正确的。我已修改项目中.vs文件夹中的applicationhost.config文件以启用Windows身份验证。我甚至检查了文件的权限,以确保经过身份验证的用户具有正确的权限。这些都没有奏效。
这一切在IIS Express 6中运行良好。微软在IIS Express 10中进行了哪些更改,这一切都搞砸了?
编辑:必须手动输入这些东西,因为我无法从开发机器移动代码。
web.config中:
<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不支持localhost:https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/4776775/上的Windows身份验证
还需要让它与Firefox一起使用。
再次编辑:所以,我想我知道发生了什么。我有两个用户帐户:常规用户帐户和具有更多权限的管理员帐户。我在Windows 7下所做的是,当我登录常规帐户时,我在管理员帐户下运行了VS.然后我可以运行我的Web应用程序并使用我的管理员帐户登录该网站。这似乎不再起作用了。我可以让我的应用程序工作的唯一方法是在我的管理员帐户下运行它。否则,Windows身份验证将无法正常工作。在安全方面,这是打破了地狱,我想找到一个更好的解决方案。
我打算将这个标记为已回答,我将跟进一个新问题。目前的解决方案是在我们的管理员帐户上运行所有内容以使Windows身份验不理想。
您只需要更改项目中的某些属性,如下面的链接所示! enable windows authentication