Asp.net

IIS 和 Windows 身份驗證不允許出現錯誤頁面

  • April 12, 2017

從最近兩天開始,我一直在嘗試這個。我沒有得到什麼問題。我在網上搜尋但沒有找到任何解決方案。我嘗試了 IIS 的所有設置,例如“向下移動協商,禁用其他身份驗證”,但不起作用。所以這是我的問題:我在 ASP.NET 中有一個 Intranet Web 應用程序,它使用儲存在 Active Directory 中的使用者名和密碼。我的應用程序中有五個不同的頁面。所有頁面都與它們的 web.config 文件一起儲存在一個單獨的文件夾中。這些 web.config 文件具有允許像這樣查看該頁面的使用者的名稱。

<authorization>
<allow users="Domainname\username"/>
</authorization>

我想將不在上述列表中的使用者重定向到其他錯誤頁面並顯示適當的消息。我用這個

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 時,所有授權使用者(列表中的使用者)也重定向到錯誤消息頁面。

在 IIS 之外,它工作正常。但是,我無法將未經授權的使用者重定向到錯誤消息頁面。我也嘗試過使用 IIS 的錯誤頁面設置,但我遇到了同樣的問題。

請向我建議我應該做些什麼來糾正這個問題。還有其他方法嗎?

如果您使用的是 Windows 身份驗證,那麼您應該記住這一點 - 如果您在 IIS 中手動啟用 Windows 身份驗證,請不要在 web.config 中包含以下程式碼

<authentication mode="Windows" />

如果您使用它,它將導致與我在上面的問題中所述相同的問題。

我不確定這是否是您特定情況下的問題,但總的來說,過程是:

  1. 瀏覽器嘗試在第一次連接時匿名連接
  2. Web 伺服器說“對不起,您不能這樣做,錯誤 401,這是使用者可以進行身份驗證的方式”
  3. 瀏覽器整理身份驗證(例如要求使用者提供憑據)
  4. 瀏覽器發出第二個請求,其中包含身份驗證標頭資訊

我的猜測是,您在步驟 (1) 中失敗了,因為在使用者有機會提供憑據之前擷取了第一個 401。您可以使用 F12 工具或 Fiddler 之類的工具來驗證這一點。

引用自:https://serverfault.com/questions/699739