Laden...

HttpRequestValidationException wird beim IIS zu System.Web.HttpException

Erstellt von Taucher vor 11 Jahren Letzter Beitrag vor 11 Jahren 2.881 Views
T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren
HttpRequestValidationException wird beim IIS zu System.Web.HttpException

Hallo Gemeinde,

ich habe folgendes Problem in meinem ExceptionModule.
Im Development Server von Visual Studio erkennt er mir wenn eine HttpRequestValidationException fliegt und ich kann darauf auch reagieren. Allerdings wenn ich die Anwedung im IIS 6/7 laufen lasse kommt dort nur eine HttpException und ich weiß nicht wieso.

Hier mal der Auschnitt wo ich das Abfrage:


Exception ex = System.Web.HttpContext.Current.Server.GetLastError();
System.Web.HttpContext.Current.Server.ClearError();
if (ex != null)
{
   if (ex is HttpRequestValidationException)
      this.OnHttpRequestValidationException(ex as HttpRequestValidationException);
   else if (ex is InvalidRouteException)
      this.OnInvalidRouteException(ex as InvalidRouteException);
    else
       this.OnUnknownError(ex);
}

Weiß jemand wieso das so ist und wie ich das ändern kann?

5.941 Beiträge seit 2005
vor 11 Jahren

Hoi Taucher

Beides Mal hast du die gleichen Voraussetzungen, die den Fehler provozieren?
Was sagt die InnerException von HttpException?
Passiert das bei einem Minimalbeispiel auch?

Ich mag mich erinnern, das ich den Fehler bei mit dem IIS auch bekommen habe.
Den Development Server würde ich nicht als Ausgangspunkt nehmen, sondern am liebsten direkt mit dem IIS entwickeln, dann verhält es sich auch immer gleich.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

Hallo Peter,

die InnerException ist leer und die Nachricht ist schon die richtige, also das ein gefährlicher Wert im Request ist. Die Voraussetzung ist immer gleich, ja.

Ein Minimalbeispiel habe ich nicht zur Hand, das müßte ich schnell erstellen und dann versuchen.

5.941 Beiträge seit 2005
vor 11 Jahren

Hallo Taucher

Interessant.
Hast du sonst noch was spieziell eingestellt im IIS? Welche ASP.NET Version? Integriert oder Classic Mode?

OK, dann mach das Beispiel mal.

Gruss Peter

--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

D
615 Beiträge seit 2009
vor 11 Jahren

Hallo Taucher

Hatte das Problem auch mal, versuch mal folgendes in der Web.Config anzupassen (hinzuzufügen):


.....<httpRuntime requestValidationMode="2.0"/>..........

Das sollte helfen 😉

Beste Grüsse

Diräkt

Edit : MSDN LINK dazu

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

Hallo Diräkt,

den ValidationMode habe ich bereits ohne Erfolg umgestellt weil ich davon auch schon gelesen hatte.
Ich werde das Problem im Laufe des Tages nochmals angehen und dann die weiteren Ergebnisse hier rein schreiben.

T
Taucher Themenstarter:in
307 Beiträge seit 2008
vor 11 Jahren

Also, ich habe mir das ganze nochmal angesehen indem ich mich an den Prozess mal angehängt habe.
Das Problem ist dass bei einem "gefährlichem Request" eine System.Web.HttpException geworfen wird mit der Meldung: "Fehler beim Ausführen der untergeordneten Anforderung für Handler System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerWrapper" und in der InnerException die HttpRequestValidationException drin steckt. (Also InnerException ist doch nicht leer, tschuldigung).
Beim Abfragen ob "ex is HttpRequestValidationException" kommt "false" raus und deshalb konnte ich bisher nicht richtig darauf reagieren.
Wieso beim IIS nicht die HttpRequestValidationException sondern die HttpException kommt weiß ich nicht, das wäre vielleicht noch zu klären um Abhilfe zu schaffen.
Ich werde jetzt eben die InnerException immer durchlaufen um zu sehen ob eine HttpRequestValidationException vorhanden ist.