我試圖在ajax請求後處理「超出最大請求長度」錯誤,它對於真正的大文件正常工作,但對於較小文件錯誤響應失去了,所以我無法按照我想要的方式處理它。這是相關代碼:「超出最大請求長度」錯誤處理僅適用於大文件
$(document).on({
ajaxError: function (event, request, settings) {
console.log("error Ajax error");
console.log(event);
console.log(request);
console.log(settings);
if(request.responseText.contains("Maximum request length exceeded")){
alert("Error! max file size: " + "@HttpContext.Current.Session["MaxFileSize"]");
}
}
});
對於上述文件150MB左右,它的工作原理大小,responseText的是HTML錯誤頁面,一切運行我想。但對於較小的文件,responseText是空的。我試圖用20Mb和100Mb配置web.config中的maxRequestLength,行爲是一樣的。
當我在我的application_error斷點時,我可以看到確實發生了錯誤,它是一個「最大請求超出」錯誤,但是如果我嘗試修改響應它不起作用,再次,爲小文件,真的大的文件也能正常工作,這是我的示例代碼:
void Application_Error(object sender, EventArgs e)
{
var lastException = Server.GetLastError();
var logger = NLog.LogManager.GetCurrentClassLogger();
logger.Fatal(lastException);
if (lastException.Message.Contains("Maximum request length exceeded"))
{
this.Server.ClearError();
HttpContext.Current.ClearError();
Response.Write(
new JavaScriptSerializer().Serialize(
new { error = "MaxLength Error Occured, handle in page" }
)
);
}
}
一件事我注意到的是,當這個responseText丟失的Application_Error被調用了兩次,這我不知道,如果它的相關性。
我一直在尋找,我還沒有找到任何解決方案,大多數人的問題是,錯誤發生後,即使配置正確後,我的問題不是它發生時,它不應該發生時它應該但我無法處理它,因爲錯誤的responseText丟失。我將非常感謝任何解決此問題的方向。
更新:我沒有嘗試過不同的瀏覽器,我在Firefox中這樣做,我現在已經在Chrome和IE上試過了,無論文件大小如何,請求對象的responseText都不起作用總是空的。但是,Application_Error僅被調用一次,在Firefox中被調用兩次,並且具有相同的錯誤。
忽略這一個 – mants