2011-03-18 32 views
4

我正在使用asp.net 3.5 web.config來限制訪問,並且它工作得很好。如何在Windows身份驗證中使用自定義錯誤頁面

<authentication mode="Windows"> 
<authorization> 
    <allow users="Bill, John"/> 
    <deny users="*"/> 
</authorization> 

未經授權(但身份驗證)的用戶將被阻止通過一個系統錯誤消息說:

Server Error in '/' Application 
Access is denied. 
Description: An error occurred while ....... 
Error message 401.2: Unauthorized: Logon failed due to server configuration ... 

爲了使消息更友好,我取消了的customErrors標誌,並創建一個GenericErrorPage。 htm在我的項目的根路徑中。

<customErrors mode="On" defaultRedirect="GenericErrorPage.htm"> 
    <error statusCode="403" redirect="NoAccess.htm" /> 
    <error statusCode="404" redirect="FileNotFound.htm" /> 
</customErrors> 

但是,它只是不起作用。我仍然收到系統錯誤消息,而不是我的自定義錯誤頁面。

任何建議將不勝感激。

回答

-1

變化:

<customErrors mode="RemoteOnly" /> 

mode屬性可以是下列之一:

* On – error details are not shown to anybody, even local users. If you specified a custom error page it will be always used. 
* Off – everyone will see error details, both local and remote users. If you specified a custom error page it will NOT be used. 
* RemoteOnly – local users will see detailed error pages with a stack trace and compilation details, while remote users with be presented with a concise page notifying them that an error occurred. If a custom error page is available, it will be shown to the remote users only. 

顯示一個簡明而不是那麼漂亮的錯誤頁面,訪問者仍然不夠好,所以您需要將自定義錯誤頁面放在一起並按照以下方式指定:

<customErrors 
     mode="RemoteOnly" 
     defaultRedirect="~/errors/GeneralError.aspx" 
/> 
+0

我更改爲RemoteOnly,但仍不起作用:< – nonetaku 2011-03-18 06:26:19

4

未測試過此i其他情況下,但從這detailed article看一些類似的問題的建議。

另外一個問題竟然是:

的訪問錯誤頁面被攔截由授權要求。

解決的辦法是在web.config中使用屬性。參考鏈接更詳細的解釋,但這裏有一個片段:

<!-- in the same root web config file--> 
<configuration> 
    <system.web> 
     <authorization> 
     <allow users="Bill, John"/> 
     <deny users="?" /> 
     </authorization> 
    </system.web> 

    <!-- the page specific authorization--> 
    <location path="GenericErrorPage.htm"> <!-- other ones for your other pages--> 
     <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
     </system.web> 
    </location> 

</configuration> 
+0

此解決方案僅適用於使用表單身份驗證而非Windows身份驗證的情況。 – xpereta 2013-01-30 09:12:44

10

你不會看到它 - 自定義錯誤頁由ASP.NET應用程序提供服務,但Windows身份驗證通過IIS本身擔任了。

現在您可以將IIS設置爲使用不同的錯誤頁面。對於IIS7,這需要separate configuration section;

<system.webServer> 
    <httpErrors errorMode="Custom" existingResponse="Auto"> 
    <error statusCode="403" 
      subStatusCode="-1" 
      prefixLanguageFilePath="" 
      path="C:\inetpub\wwwroot\errors\403.htm" 
      responseMode="File" /> 
    </httpErrors> 
</system.webServer> 

而且您需要確保應用程序池用戶有權訪問該路徑。

相關問題