簡體   English   中英

CustomError IIS6和JQuery Ajax異常處理

[英]CustomError IIS6 and JQuery Ajax exception handling

我有一個問題,其中發生了兩個級別的異常處理。

我使用jQuery提出了ajax請求,並從服務器上拋出了自定義錯誤異常。 這基本上是一個狀態碼500錯誤。

這是在我為諸如“用戶不存在”或“密碼不匹配”之類的登錄頁面動態創建的。 用戶不會被重定向到新頁面,狀態只是作為狀態更新而更新。 目前有效。

但是,如果用戶成功登錄,他們將被重定向到頁面。 新頁面將查看用戶是否已分配角色來查看頁面。 由於來自web.config的customerrors被關閉,用戶將被帶到死亡的黃頁。 表示用戶沒有權限或訪問被拒絕。

處理此問題的邏輯方法是重定向頁面以查找403錯誤並在web.config配置:

<customErrors mode="RemoteOnly">    
    <error statusCode="403"   redirect="~/accessdenied.aspx"/>
</customErrors>

現在,如果用戶沒有足夠的角色,則可以使用此方法,但是通過使用jQuery處理500個錯誤請求返回到原始內容,我得到了空消息,並拋出了一個JavaScript錯誤,它不知道如何解析錯誤響應。

這是一個關於stackoverflow的類似問題,但沒有幫助:

ASP.NET中具有customErrors mode =“ On”的jQuery ajax

我的問題與該問題之間的區別在於,登錄名處理的是403和500錯誤。 通過我的登錄,可以處理500個錯誤,並轉到處理403個錯誤的新頁面。 將更改添加到web.config會更改整個站點的錯誤處理。

綜上所述,使用customerrors mode = off時,jQuery異常有效,但是自定義403重定向無效。 使用customerrors模式=開啟。 jQuery異常無效,但403重定向有效。

有什么方法可以解決這個問題,任何人都可以提出來? 我認為一種方法是使登錄名也能處理403,並希望從登錄名匹配的角色將與傳入頁面中的角色匹配。 但是我對此很懷疑,因為登錄系統與重定向到的頁面位於不同的系統上。

好吧,我選擇擺脫customerror,只是從服務器上拋出一個自定義403異常,JavaScript將攔截該異常。 然后,我重定向到一個被拒絕訪問的頁面。

這是我的C#代碼

if (!allowedRoles)
{
     Logout();
     throw new HttpException(403, "User does not have permissions to view this page");
}

然后在我的jQuery中:

function onLoginError(error, textStatus) {
    var jsonErrorData = JSON.parse(error.responseText).Message;
    $('#status').text(jsonErrorData );
}

和我的web.config

<customErrors mode="Off"></customErrors>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM