0

在 IIS6 上,如果用户取消身份验证请求,使用 NTLM 身份验证(意思是集成 Windows 身份验证),我如何将他们重定向到另一个页面?我不能只在 web.config 中抓取 401(尝试过)或 401.1(不是 int)。

如果问题是 401 状态,我无法重定向,因为我故意推动 401 以获得响应,是吗?那么,当他们取消浏览器质询时,我该如何捕捉呢?

澄清一下,如果我打开 Firefox 并导航到 IWA 页面,它会显示一个对话框(假设我没有在 about:config 中配置它)并且我键入要使用的 Windows 凭据。我想阻止他们阻止那个盒子。

我希望 IIS6/7 上的每个应用程序都有这种行为。在我们迁移到 IIS7 之前,我最初问过这个问题,因此可以在两者之间更改任何答案。

我需要根据用户取消 401 Auth 请求(即 401.1 错误代码)重定向每个应用程序,而不是每个服务器。

4

1 回答 1

2

某些响应类型不会传递给 .NET 进行处理。相反,它们必须在 IIS 级别进行处理。如果您想要基于响应的不同页面,那么您需要转到 IIS 管理器并找到控制错误页面的部分(根据您使用的 IIS 版本而有所不同)。

然后添加您要捕获的状态代码,并为其提供您希望将浏览器定向到的页面。

我知道您提到了 IIS 6,但我无权访问其中一台服务器。对于 IIS 7,单击该站点。转到 IIS > 错误页面部分。单击添加。输入代码 (401.1) 并为其提供指向您网站页面的路径。确保该页面可供匿名访问。

您还可以在 web.config 中处理此问题(有关更多详细信息,请参阅Microsoft Docs):

在 web.config 的错误部分中,执行以下操作(例如):

<error statusCode="401" subStatusCode="1" prefixLanguageFilePath="c:\inetpub\custerr" path="401_1.htm" />

我不知道您是否可以为此使用 .aspx 页面,但看起来确实如此。但是,它们可能必须完全独立。

Microsoft 文档HttpResponse.SubStatusCode位于MSDN 上。根据他们的说法,它仅适用于 IIS 7、.NET 3.0+ 以及使用集成管道模式时。根据您的应用程序,这可能有点限制。

于 2010-12-06T23:53:23.393 回答