使用Windows身份验证的Visual Studio调试无法正常工作

时间:2013-12-16 13:19:16

标签: visual-studio iis iis-express

我有一个ASP.NET webforms应用程序,在本地开发时使用Windows身份验证。我第一次调试webapp时,IIS Express启动并且页面按预期工作。如果我停止调试然后再次启动它,我会进入这个无休止的循环,无论我去哪个页面,它总是转发到login.aspx页面然后转到我的Default.aspx页面。

我可以继续点击不同的页面,但它仍然会继续登录然后默认。我应该在此时进行身份验证,而不是忘记登录.aspx。我相信这是因为IIS express认为我没有经过身份验证。但是,当我查看我的cookie时,我发现有一个ASP.NET_SessionId cookie,所以我不认为这应该发生。

如果这有帮助,我在login_aspx

的page_load中有这个
if (authSection.Mode == AuthenticationMode.Windows)
{

    //stuff happens here
    Response.Redirect("Default.aspx");
    return;
}

要解决此问题,我必须杀死IIS express并再次开始调试。我不确定为什么它认为我没有经过身份验证。尽管这不是同一个问题,但我尝试了这里提供的答案:https://stackoverflow.com/a/19515891/888617并没有帮助。

1 个答案:

答案 0 :(得分:0)

编辑:这实际上似乎无法解决我的问题。


事实证明这个问题是针对Chrome的。我在调试时遇到了这个问题,不得不杀死IIS表达程序以便自行解决。但是,通过执行以下操作,我找到了更为严格的解决方案。

在%userprofile%\ documents \ IISExpress \ config \ applicationhost.config中确保将overrideModeDefault设置为允许使用windowsAuthentication和anonymousAuthentication,如下所示:

<section name="anonymousAuthentication" overrideModeDefault="Allow" />
<section name="windowsAuthentication" overrideModeDefault="Allow" />

您的身份验证部分也应如下所示。请注意,唯一的提供商是NTLM。

<authentication>
    <anonymousAuthentication enabled="false" userName="" />
    <basicAuthentication enabled="false" />
    <clientCertificateMappingAuthentication enabled="false" />
    <digestAuthentication enabled="false" />
    <iisClientCertificateMappingAuthentication enabled="false">
    </iisClientCertificateMappingAuthentication>
    <windowsAuthentication enabled="true">
        <providers>
            <add value="NTLM" />
        </providers>
    </windowsAuthentication>
</authentication>

此部分也应该在web.config中。

<authentication>
    <windowsAuthentication enabled="true">
      <providers>
        <clear />
        <add value="NTLM" />
      </providers>
    </windowsAuthentication>
</authentication>