2010-06-04 13 views
24

Ich arbeite an einigen Fehlerbehandlung in meiner MVC-App, und ich möchte asperrorpath zu etwas, das nicht die Tatsache, dass ich mit .NET ... etwas wie pathASP.NET MVC Fehlerbehandlung - Entfernen aspxerrorpath

Kann jemand mir eine Richtung geben, wie man das ändert?

+0

Hallo rockinthesixstring. Haben Sie die Antwort schon gefunden? Ich würde das auch gerne machen! Jemand? Jemand? +1 – Funka

+0

Entschuldigung, für mich noch keine Antwort. –

+0

Sorry, du machst dich selbst betrügen ich denke, es ist nicht trivial zu wissen, ob eine Website asp.net läuft. asp.net und mvc haben beide sehr starke verräterische Zeichen, die nicht viel Aufwand erfordern, um herauszufinden, und dies ist integriert in die Art und Weise, dass Anfragen behandelt werden, so dass es keine Konfiguration oder andere Änderungen gibt, die sie verbergen –

Antwort

-1

Es gibt viele Möglichkeiten, wie Sie Ihr Problem lösen können. Es hängt davon ab, was Sie wollen.

  1. Sie können zum Umleiten auf Fehler und auch verschiedene Links für verschiedene Fehler angeben, wie <error statusCode="403" redirect="NoAccess.htm" />
  2. Sie können mit Handle Attribut für Ihren Controller/Aktionen Abschnitt in Ihrem web.config Und schreiben Standard-Link bearbeiten. Sie können darüber lesen here.
2

mein Wprk um ist

route.MapRoute("NotFound", "{*url}", new {controller = "Home", action = "NotFound"}) 

An der Unterseite mit den meisten, die ich NotFound Aktion in HomeController haben. Es wird einfach alle anderen URLs fangen.

+0

nein. Die URL interessiert mich nicht (ich habe das schon erledigt) ... aber der Querystring für das returnUrl ist zur Zeit '? Asperrorpath = http ...' wobei jeder weiß, dass ich .net benutze (nicht zu sagen, es ist Eine schlechte Sache). Ich möchte nur den Artikel in '? Go = http ...' ändern. Was ich schon gemacht habe. Ich werde meine Lösung später am Tag veröffentlichen. –

+0

Ja, ich habe so viele Tricks gefunden, das ist das, was ich für das Beste halte. Wenn Sie auf diese Art und Weise 'On' (oder' RemoteOnly'') 'customError' verwenden, aber keine 404-Umleitung usw. in der web.config definieren, fängt' '{* url}' 'es ab. Ich benutze MVC 3. Nicht sicher über die vorherige Version. Ich werde niemals die '? Asperrorpath =' – CallMeLaNN

8

Fügen Sie redirectMode="ResponseRewrite" zum Abschnitt customErrors hinzu. Das hat für mich funktioniert.

+0

Ort auf genau das, was ich suchte, danke – Stuart

+10

Warnung: Sie können nur ResponseRewrite verwenden, wenn Sie auf eine Datei auf dem Server umleiten und keine MVC-Routen zu Ihrer Fehlerseite verwenden: http ://Paketüberfluss.com/a/3770265/188740 –

-1

Durch die Bereitstellung einer benutzerdefinierten Abfragezeichenfolge wird Ihr aspxerrorpath nicht angezeigt.

Überprüfen Sie die ursprüngliche Antwort von diesem Link: how to prevent “aspxerrorpath”

+0

I * rate * so, aber sagen Sie, dass Sie auf einer 404 auf die Homepage Ihrer Website umleiten möchten - wenn Sie in der web.config "redirect =" ~ /? "' angeben, wird Ihre URL aussehen wie "http: // localhost: 51437 /?" - was eine Art hässlich ist und möglicherweise nicht die Anforderungen Ihres Projekts erfüllt. – alex

-1

Nur Dummy wie unten Query-String auf Ihre HTM-Seiten hinzufügen.

<customErrors mode="On" defaultRedirect="errorpage.htm?error=1" > 
     <error statusCode="404" redirect="filenotfound.htm?error=1" /> 
</customErrors> 

prüft mit Fiedler, der asperrorpath Query-String erscheint nicht mehr und Referrer von errorpage.htm ist absolut sauber.

+0

Was passiert, wenn Sie auf eine MVC '.cshtml'-Seite anstelle einer normalen HTML-Seite umleiten? Das MVC-Framework verwendet standardmäßig ".cshtml" -Dateien. Was passiert auch, wenn Sie ein attributbasiertes Routing eingerichtet haben? – alex

+0

Diese Lösung ist gut für Fehler, die Sie nicht mit Code umgehen können oder wollen. Dies ist der Zeitpunkt, zu dem die Suchanfragen für den Querypath-Pfad angezeigt werden. Der Hauptzweck besteht darin, Sniffer nicht die Back-End-Technologie entdecken zu lassen, die Sie verwenden. Sie können Ihren Benutzer immer zu einer Controller-Aktion umleiten, die eine Fehleransicht zurückgibt, in der kein Fehlerpfad angezeigt wird und Sie vollkommen sicher sind. –