我必須重定向從WebMethod
,我知道我不能。所以我只是試圖返回頁面url作爲字符串,並將在success
回調重定向。ThreadAbortException在WebMethod中未正確捕獲
問題是我在重定向之前有大量的代碼,並且寫在一個集中式方法中(只有在重定向之前調用以執行相同操作的方法)。在我的重定向中,我也必須調用該函數。
我只是把我的代碼放在這裏,不用調用集中的函數來更好的理解。
[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public static string TestException()
{
try
{
System.Web.HttpContext.Current.Response.Redirect("Test.aspx");
return "No Exception";
}
catch(Exception ex)
{
return "Exception";
}
}
響應我得到Internal Server Error (505)
與System.Threading.ThreadAbortException
,而不是返回「異常」在catch塊。
這是不是與其他異常,即情況下,如果我喜歡的東西
int i = 0;
int j = 5/i;
這也提出了異常,但並沒有給我Internal Server Error (505)
更換Response.Redirect
,而不是返回「EXCETION」,即從捕撈返回的字符串塊。
我的問題是
- 爲什麼它是從其他異常處理
System.Threading.ThreadAbortException
不同? - 我知道其他的工作,如功能加載和可選參數
Centralized
函數中使用,並通過檢查額外的參數我可以返回字符串,而不是重定向,但我想知道是否有什麼,我可以使用webmethod內或任何沒有觸及集中功能的其他地方讓它工作?
在使用'Thread.ResetAbort'後在控制檯上給出'Authentication failed'錯誤 – Imad
@Imad相信我,使用'HttpRedirect'並不是一個好的做法。我建議你不要這樣做。 –
早就答應了。想要仍然*嘗試*它。 – Imad