2016-03-28 64 views
1

我試圖在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中被調用兩次,並且具有相同的錯誤。

+0

忽略這一個 – mants

回答

0

我想結束這個問題。我終於弄明白了。問題是在Visual Studio中進行調試時,我猜測服務器的行爲有所不同,一旦我在測試環境中發佈錯誤表現得和我預期的一樣,並且使用超出配置的限制的任何文件。

相關問題