2016-03-28 17 views
1

Ich versuche, den "Maximale Anforderungslänge überschritten" Fehler nach einer Ajax-Anfrage zu behandeln, es funktioniert gut für wirklich große Dateien, aber für kleinere Dateien die Fehlerreaktion ist verloren, so kann ich nicht damit umgehen, wie ich es möchte. Dies ist der entsprechende Code:"Maximale Anforderungslänge überschritten" Fehlerbehandlung funktioniert nur für große Dateien

$(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"]"); 
      } 
     } 
    }); 

Für Dateien über 150 MB oder so in der Größe funktioniert es, die response ist die HTML-Fehlerseite, alles läuft wie ich will. Bei kleineren Dateien ist der ResponseText jedoch leer. Ich habe versucht, die maxRequestLength in der web.config mit 20 MB und 100 MB konfigurieren, das Verhalten ist das gleiche.

Wenn ich Haltepunkt in meinem Application_error kann ich sehen, dass tatsächlich der Fehler passiert ist und es war ein "Max Request Exceeded" Fehler, aber wenn ich versuche, die Antwort zu ändern, funktioniert es nicht wieder für kleinere Dateien, für wirklich große Dateien, die es funktioniert gut, hier ist mein Beispielcode:

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" } 
       ) 
      ); 
     } 
    } 

Eine Sache habe ich bemerkt, dass, wenn die response verloren geht Application_Error zweimal aufgerufen, die ich bin nicht sicher, ob seine relevant.

Ich habe überall gesucht und ich habe keine Lösung gefunden, das Problem der meisten Leute ist, dass der Fehler auch nach der Konfiguration richtig passiert, mein Problem ist nicht, dass es passiert, wenn es nicht sollte, passiert es wann es sollte aber ich kann nicht damit umgehen, weil der responseText des Fehlers verloren ist. Ich würde mich sehr freuen, alle Anweisungen zur Lösung dieses Problems.

Update: Ich hatte nicht versucht, einen anderen Browser, ich tat es alles in Firefox, ich habe es jetzt in Chrome und IE versucht und es funktioniert nicht, egal, die Dateigröße, die responseText des Anfrageobjekts ist immer leer. Application_Error wird nur einmal aufgerufen, in Firefox wird zweimal aufgerufen und mit dem gleichen Fehler.

+0

diesen ignorieren – mants

Antwort

0

Ich wollte die Frage schließen. Ich habe es endlich herausgefunden. Das Problem ist beim Debuggen in Visual Studio, ich denke, der Server verhält sich anders, sobald ich in unserer Testumgebung veröffentlicht hatte, verhielt sich der Fehler so, wie ich es erwartet hatte, und arbeitete mit jeder Datei über dem Limit, das ich konfiguriert hatte.

Verwandte Themen