2010-03-29 54 views
5

我使用的是自定義錯誤頁在IIS 6:ASP.NET:禁用單個aspx頁面的身份驗證(自定義錯誤頁面)?

<customErrors redirectMode="ResponseRedirect" mode="On" defaultRedirect="Error2.aspx"/> 

我要爲自定義錯誤頁禁用驗證,因爲要提出的錯誤與驗證模塊,我不想要進入一個無限循環,我想向用戶顯示一個乾淨的錯誤頁面。我一直在嘗試下面的配置來做到這一點。

<location path="Error2.aspx"> 
<system.web> 
    <authentication mode="None"/> 
    <authorization> 
    <allow users="?"/> 
    <allow users="*"/> 
    </authorization> 
</system.web> 
</location> 

我得到一個System.Configuration.ConfigurationErrorsException設置驗證模式的行。

在應用程序級別之外使用註冊爲allowDefinition ='MachineToApplication'的節是錯誤的。此錯誤可能是由於虛擬目錄未被配置爲IIS中的應用程序。

我已驗證應用程序文件夾下的子目錄中沒有其他web.config文件。應用程序文件夾被配置爲IIS中的應用程序,錯誤頁面位於應用程序的根目錄下。爲IIS中的錯誤頁面設置的文件權限包括匿名和Windows身份驗證(我也試過匿名)。

回答

1

我將自定義錯誤重定向模式更改爲rewriteResponse。通過這樣做,不會爲錯誤頁面發出單獨的請求,引發錯誤的驗證模塊不會被重新執行等。

我可以想象,這在某些情況下可能不夠用(可能是MVC框架?)但對於我的用例來說,這已經足夠了。

現在,我將回答我提出的這個解決方法的問題,除非其他人能夠證明實際上禁用身份驗證的方法。

0

打開您的IIS設置,並確保根IIS(machine.config)允許寫入違規屬性(system.web.authentication或system.web.authorization,具體取決於錯誤中引用的行號)。

之後,清理您的解決方案並重建。我有這個問題,並且它與machine.config或web.config設置無關。出於某種原因,做一個乾淨的和重建使錯誤消失。

+0

對不起,沒有運氣。 machine.config中的allowDefinition被設置爲默認的MachineToApplication。這意味着在應用程序的根目錄下設置web.config中的值應該沒問題,這是我設置值的位置。 – 2010-03-29 20:16:52

1

看看下面的link。它包含的信息可能對location標籤有幫助。

<location path="404.aspx"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 

更簡單的方法將是移動要始終對自己的目錄中可以訪問所有的錯誤文件和網頁,然後web.config文件添加到授予未經驗證的訪問的目錄。

+0

這不是那麼簡單。該錯誤在模塊的PostAquireRequestState中引發。這導致重定向到Error2.aspx,但模塊的PostAquireRequestState再次被調用。加載錯誤頁面時(即使允許users = *),Application.Context.SkipAuthorization設置爲false。由於重定向請求新頁面,因此Application.Server.getLastError()不起作用。代碼繼續在第一個地方拋出錯誤,因此錯誤頁面不顯示。檢查請求是否是錯誤頁面可能工作,但我懷疑警告。 – 2010-03-29 20:49:25

相關問題