我有一个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并没有帮助。
答案 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>