我刚刚将我的应用程序从Visual Studio 2012升级到Visual Studio 2013.我的Windows身份验证不再起作用了。它给了我以下错误。
HTTP Error 401.2 - Unauthorized
You are not authorized to view this page due to invalid authentication headers.
在visual studio中,可以选择从网站属性本身选择身份验证。所以我禁用了匿名访问并启用了Windows身份验证,但是它要求我输入用户名和密码,如下面的弹出窗口所示。即使我在这里提供域凭据。它仍然一次又一次地给我这个弹出窗口。
网络配置:
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
<identity impersonate="false" />
<trace enabled="true" />
IIS Express aspnetConfig:
<authentication>
<anonymousAuthentication enabled="false" userName="" />
<basicAuthentication enabled="false" />
<clientCertificateMappingAuthentication enabled="false" />
<digestAuthentication enabled="false" />
<iisClientCertificateMappingAuthentication enabled="false">
</iisClientCertificateMappingAuthentication>
<windowsAuthentication enabled="true">
<providers>
<add value="Negotiate" />
<add value="NTLM" />
</providers>
</windowsAuthentication>
</authentication>
<authorization>
<add accessType="Allow" users="*" />
</authorization>
<location path="Path">
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
<anonymousAuthentication enabled="false" />
</authentication>
</security>
</system.webServer>
</location>
如果您想了解更多详细信息,请与我们联系。
更新:
我发现如果我从web.config中删除下面的行而不是它开始工作。
<remove users="*" roles="" verbs="" />
答案 0 :(得分:16)
小心applicationhost.config修改 - 在Visual Studio 2015中我发现有时驻留在本地项目目录中。
例如:
DRIVE:\MYPROJECT\.vs\config\applicationhost.config
如果您不确定使用哪个applicationhost配置文件,可以使用ProcMon&amp; amp ;;监控文件访问。然后根据“Path”缩小结果范围,看看VS在调试时实际读取的内容。
更新:这似乎也是Visual Studio 2017中的行为。
答案 1 :(得分:14)
看起来你解决了自己的问题!对你好除了这篇文章帮助我之外,我发现以下内容对于配置我的IIS Express非常有帮助。
IIS Express Windows Authentication
编辑:我已经复制了关联链接中的重要信息,以防它死亡。这完全来自用户vikomall
选项-1 强>:
编辑\My Documents\IISExpress\config\applicationhost.config
文件并启用windowsAuthentication,即:
<system.webServer>
...
<security>
...
<authentication>
<windowsAuthentication enabled="true" />
</authentication>
...
</security>
...
</system.webServer>
选项-2 强>:
解锁\ My Documents \ IISExpress \ config \ applicationhost.config中的windowsAuthentication部分,如下所示
<add name="WindowsAuthenticationModule" lockItem="false" />
将所需身份验证类型的覆盖设置更改为“允许”
<sectionGroup name="security">
...
<sectionGroup name="system.webServer">
...
<sectionGroup name="authentication">
<section name="anonymousAuthentication" overrideModeDefault="Allow" />
...
<section name="windowsAuthentication" overrideModeDefault="Allow" />
</sectionGroup>
</sectionGroup>
在应用程序的web.config中添加以下内容
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<security>
<authentication>
<windowsAuthentication enabled="true" />
</authentication>
</security>
</system.webServer>
</configuration>
以下链接可能有所帮助: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/
安装VS 2010 SP1后,可能需要使用选项1 + 2才能使Windows身份验证正常工作。此外,您可能需要在IIS Express applicationhost.config中将匿名身份验证设置为false:
<authentication>
<anonymousAuthentication enabled="false" userName="" />
答案 2 :(得分:3)
在Visual Studio 2017,asp.net核心项目中,身份验证在launchSettings.json设置
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:54491/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"TestAspNetCoreProd": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "api/values",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:54492"
}
}
}
答案 3 :(得分:0)
对于Visual Studio 2019,可以在以下位置找到applicationhost.config
驱动器:\ MYPROJECT \ .vs \ $(PROJECTNAME)\ config \ applicationhost.config