2013-07-11 11 views
8

ich im Hinblick auf die Umleitung versuche und halten Sie die Fehler in der Frage Titel geschrieben bekommen.Die Länge der Abfrage-String für diese Anforderung überschreitet die konfigurierte maxQueryStringLength Wert

Während Breakpoint den Code obwohl das erste Bit Code iv vorbei Prüfung legte sich unter die Meldung Einstellung und die Ausnahme festlegen. nachdem nach der Rückkehr fort Umleitung der nächste Seite angezeigt wird, ist wie folgt.

enter image description here

Hinzufügen von Bruchstellen an den Errorcontroller und Fehlermodell fand ich, dass der Code nie dort ankommt.

Der Blick Ich versuche zu schreiben ist eine Fehlerseite. Hier ist ein Code, der Ihnen hilft, das Problem zu sehen.

Die RedirectToAction:

string message; 
message = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again."; 
return RedirectToAction("Error", "Error", new { ex = ex.ToString(), message = message}); 

Die Aktion in meinem Errorcontroller:

public ActionResult Error(string ex, string message) 
{ 
    ViewBag.Message = "Error"; 
    return View(new ErrorModel(ex, message)); 
} 

Mein Fehler Modell:

namespace MvcResComm.Models 
{ 
    public class ErrorModel 
    { 
     public string ex { get; set; } 
     public string message { get; set; } 

     public ErrorModel(string ex, string message) 
     { 
      this.ex = ex; 
      this.message = message; 
     } 
    } 
} 
+0

Sie können http://stackoverflow.com/questions/8159321/request-exceeds-the-configured-maxquerystringlength-when-using-authorize für eine Antwort überprüfen. –

+0

Ich verstehe das Problem jetzt, habe aber immer noch keine funktionierende Lösung, um es zu beheben. – Pomster

Antwort

4

Warum verwenden Sie nicht TempData, es ist so etwas zu tun gemeint. So zum Beispiel:

TempData["ErrorMessage"] = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again."; 

Überprüfen Sie diese link.

EDIT

Fahren Sie mit Ausnahmemeldung wie folgt aus:

TempData["Error"] = ex.Message(); 
TempData["ErrorMessage"] = "An error has occured during the communication to lightstone, this is likely a timeout issue and could be the result of a bad connection. Please go back and try again."; 

return RedirectToAction("Error", "Error"); 

Dann greifen sie nur von Ihrem ErrorController, so etwas wie:

public ActionResult Error(string ex, string message) 
{ 
    var error = (string)TempData["Error"]; 
    // do other magic ... 
} 
+0

Danke, ich werde dafür sorgen, dass dies zu tun, aber ich denke, der Fehler ist bevor ich den Fehler-Controller bekomme. Der Fehler tritt bei der Umleitung auf Aktion auf. – Pomster

+0

@Pomster Entschuldigung, ich war nicht klar, überprüfen Sie meine Bearbeitung. Ich hoffe, es hilft. –

+0

@Pomster, Eigentlich habe ich es nicht getestet, aber ich bin mir ziemlich sicher, dass Sie es direkt an die Ansicht weitergeben können (ich meine, Sie können 'TempData [" Error "]' direkt in Ihrer Ansicht zugreifen, Sie nicht muss es passieren). –

1

Es gibt eine maxumum URL Länge Wert einstellbar im Web. Konfigurationsdatei. Diese Frage hat ein ähnliches Problem ASP.NET MVC, Url Routing: Maximum Path (URL) Length

+0

Der Fehler passiert von der Umleitung zu Aktion? Warum würde die URL-Länge einen Effekt haben? – Pomster

+0

Da die URL-Länge ein definiertes Limit für die Größe der GET-Anfrage ist. Dies geschieht, um die Unterstützung früherer Browser zu gewährleisten, die URL-Längen über einer bestimmten Größe nicht verarbeiten können. Wenn Sie zu einer Aktion (auf dem Controller) umleiten, führt es einen GET für diese Aktion aus. –

+0

Danke ok ich sehe jetzt, wie würde ich dann diese Zeichenfolgen von dem einen Controller, wo der Fehler auftritt, an den Fehler-Controller übergeben, ohne zu passieren es in der URL? Oder wie stelle ich maximale URL Größe ein? Pomster

1

In Ihrem Web.config- unter den <system.web> <httpRuntime>-Tags können Sie Ihre maxQueryStringLength

so wie seine

<system.web> 
    <httpRuntime 
     <maxQueryStringLength = "**MY NUMBER**" /> 
    /> 
</system.web 

, sich den Msdn Referenz gesetzt: http://msdn.microsoft.com/en-us/library/e1f13641%28v=vs.100%29.aspx

Auch bitte erhöhen maxQueryStringLength in der IIS-Konfiguration finden Sie unter:

http://www.iis.net/configreference/system.webserver/security/requestfiltering/requestlimits

+0

Iv diese auf große Zahlen eingestellt und nichts ist passiert? – Pomster

+0

Wie groß ist die Nummer? –

+0

Pomster

11

im Stamm web.config für Ihr Projekt unter dem system.web Knoten:

<system.web> 
    <httpRuntime maxUrlLength="10999" maxQueryStringLength="2097151" /> 
... 

Außerdem hatte ich das unter dem system.webServer Knoten hinzuzufügen, oder ich habe einen Sicherheitsfehler für meine langen Abfrage-Strings:

<system.webServer> 
    <security> 
     <requestFiltering> 
     <requestLimits maxUrl="10999" maxQueryString="9999" /> 
     </requestFiltering> 
    </security> 
... 
Verwandte Themen