我从前两天一直在尝试。 我没有得到什么问题。 我在网上search,但没有find任何解决scheme。 我尝试了IIS的所有设置,如“移动协商,禁用其他身份validation”,但不起作用。 所以这里是我的问题:我有一个Intranet Web应用程序在ASP.NET中使用用户名和密码存储在Active Directory中。 我的应用程序中有五个不同的页面。 所有的页面都与他们的web.config文件存储在一个单独的文件夹中。 这些web.config文件具有允许像这样查看该页面的用户的名称。
<authorization> <allow users="Domainname\username"/> </authorization>
我想将那些不在上面列表中的用户redirect到其他错误页面,并给出相应的消息。 我用这个
protected void Application_EndRequest(object sender, EventArgs e) { if (HttpContext.Current.Response.Status.StartsWith("401")) { HttpContext.Current.Response.ClearContent(); Response.Redirect("~/myerrorpage.aspx?myerrormsg=you are not allowed"); } }
这是在本地主机,但是当我把我的应用程序在IIS中的所有授权用户(在列表中的人)也redirect到错误消息页面。
在IIS之外,它工作正常。 但是,我无法将未经授权的用户redirect到错误消息页面。 我也尝试使用IIS的错误页面设置,但我有同样的问题。
请给我build议我该怎么做才能纠正这个问题。 还有其他的方法吗?
我不确定这个问题是否属于你的具体情况,但一般来说,这个过程是:
我的猜测是,在步骤(1)中,通过在用户有机会提供凭证之前捕获第一个401,就失败了。 您可以使用F12工具或使用像Fiddler这样的工具来validation。
如果您使用Windows身份validation,那么您应该牢记这一点 – 如果您在IIS中手动启用Windows身份validation,请不要在您的web.config中包含以下代码
<authentication mode="Windows" />
如果你使用这个,会导致和我上面在我的问题中所说的一样的问题。