Windows身份验证在IIS Express中无效,使用Visual Studio 2013,Windows 8进行调试

时间:2014-06-12 22:34:32

标签: visual-studio-2013 windows-authentication iis-express

我刚刚将我的应用程序从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身份验证,但是它要求我输入用户名和密码,如下面的弹出窗口所示。即使我在这里提供域凭据。它仍然一次又一次地给我这个弹出窗口。

enter image description here enter image description here

网络配置:

     <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="" />

4 个答案:

答案 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