2008-11-05 15 views
10

Ich habe ein Problem mit ASP.NET gefunden, das ich zumindest weiß, hat eine andere Person da draußen ratlos. Wir haben versucht, ein HttpModule zu verwenden, um Platzhalter Anforderungen an eine Webanwendung zu behandeln. Die generierte URL ist dynamisch und könnte potenziell mehrere hundert Zeichen lang sein. Leider scheint eine Einschränkung in der aspnet_isapi.dll-Datei zu sein, die die Länge des Pfads in der URL zu MAX_PATH begrenzt, die bei 260 Zeichen fest codiert ist.ASP.NET URL MAX_PATH Grenze

Hat noch jemand in dieses Problem hineingelaufen und einen Weg gefunden, dieses Limit zu umgehen? Abfragezeichenfolgenparameter sind keine Option.

Danke, Greg Ballard

+0

Das Modul wurde die URL ändern und seine Länge zu erhöhen? – Will

Antwort

3

Das Problem in Windows tatsächlich liegt, nicht ASP.NET. Windows hat MAX_PATH auf 260 festgelegt, und wenn IIS eine Anforderung für einen längeren Dateinamen annimmt, wird es fehlschlagen. Sie haben wahrscheinlich schon diesen KBase-Artikel gefunden, aber für jeden anderen: http://support.microsoft.com/kb/q177665/. Der Abschnitt Betrifft: Abschnitt zeigt das erwartete Verhalten von NT 3.51 bis hin zu Vista und Server 2003.

Wie bei einer Problemumgehung hatte ich eine ähnliche Situation, aber wir verzichten auf unsere Versuche, einen Abfragezeichenfolgenparameter zu vermeiden und habe es trotzdem getan.

2

Danke für Ihre Antwort. Während ich diesen genauen Artikel nicht gefunden habe, habe ich ähnliches gefunden. Dies ist jedoch keine Einschränkung in IIS. Sie können in der Anforderung einen längeren Pfad an IIS übergeben, und die richtige Antwort wird zurückgegeben. Sie können dies überprüfen, indem Sie es mit einer einfachen HTML-Seite versuchen. Das Problem tritt nur auf, wenn Sie aspnet_isapi.dll verwenden, um Anforderungen zu behandeln. Sogar der integrierte Debug-Server in Visual Studio kann längere Pfade als 260 verarbeiten.

8

Dies ist ein bekanntes Problem mit aspnet_isapi.dll und es gibt derzeit keine Problemumgehung. Der Grund dafür, dass dieses Problem beim Ausführen der Site im integrierten Visual Studio-Webserver (Cassini) nicht auftritt, liegt darin, dass es sich um verwalteten Code handelt, der sich nicht auf aspnet_isapi.dll verlässt.

Dies wird in einer zukünftigen Version von ASP.NET behandelt werden.

+5

(+1) 4 Jahre später, und immer noch keine Lösung. – capdragon

+0

Immer noch nicht behoben im Dezember 2012. –

0

Sie könnten eine URL-Neuschreib-ISAPI wie IIRF verwenden, um die URL in etwas umzuwandeln, das aspnet_isapi verarbeiten kann.

2

@Haacked:

Phil, erwähnen Sie, dass dies ein Problem mit aspnet_isapi.dll. Bedeutet dies nicht, dass dieses Problem im integrierten IIS7-Pipeline-Modus nicht auftreten sollte?

Von dem, was ich gehört habe, (http://forums.iis.net/t/1105360.aspx) tut es immer noch.

Ich laufe auf das gleiche Problem, und fühle mich irgendwie angespannt. Es scheint, dass ASP.NET-Routing betroffen ist. Jede ASP.NET MVC-Anwendung muss URLs haben, die kürzer als 260 sind. Danach muss sie auf Querystrings zurückgesetzt werden, was wie eine vollständige 180 aussieht!

(Sorry für Antwort-Kommentierung ... nicht genug rep noch Kommentar :()

7

I endete die folgenden in der web.config unter Verwendung dieses Problem 4 mit MVC2 und .Net Framework zu lösen.0

<httpRuntime maxUrlLength="1000" relaxedUrlToFileSystemMapping="true" /> 
+0

Vielen Dank! Ich liebe einfache Fixes – Levitikon

+2

Das hat nicht für mich funktioniert. –

2

Der Registrierungsschlüssel UrlSegmentMaxLength verwendet werden kann, das Standard-Windows maximal 260 Zeichen pro URL-Segment in eingehenden HTTP-Anforderungen zu erhöhen:

  • Key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP\Parameters
  • Wert: UrlSegmentMaxLength
  • Typ: REG_DWORD
  • Daten: (Ihre gewünschte neue Url-Segment maximal zulässige Länge, z. B. 4096)

Der maximal zulässige Wert ist 32766. Wenn ein größerer Wert angegeben wird, wird er ignoriert. (Bildnachweis: Juan Mendes)

Mehr über http.sys Einstellungen: http://support.microsoft.com/kb/820129

PC neu ist erforderlich, eine Änderung an dieser Einstellung vornehmen wirksam. (Bildnachweis: David Rettenbacher, Juan Mendes)

Ursprüngliche Quelle für diese Antwort: https://stackoverflow.com/a/7817739/12484