2016-06-06 17 views
4

http://localhost:56472/test. wirft die hässliche gelbe ASP.NET-Fehlermeldung - The Resource Cannot be Found.Punkt am Ende der URL mit MVC4 wirft Fehler

Wie fange ich diese Anfrage und

  1. Verhindern, dass die hässlichen gelben
  2. Streifen den Zeitraum vom Antrag und leiten?

Ich tue dies mein Global.asax in haben:

protected void Application_Error(object sender, EventArgs e) { 
     // Do whatever you want to do with the error 
} 

Aber der Fehler ist nicht erwischt zu werden. Normale 404s werden hier abgefangen und ich leite erfolgreich zu meiner benutzerdefinierten Fehlerseite um.

Ich bin zu Azure PaaS bereitstellen, so nicht sehr granulare Kontrolle über IIS.

Update: Mein Versuch Rewrite:

<rule name="Strip Periods" stopProcessing="true"> 
     <match url="^(.*[^.])(\.+)$" /> 
     <conditions trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="^site.com$" /> 
     </conditions> 
     <action type="Redirect" url="{MapProtocol:{HTTPS}}://www.site.com/{R:1}" /> 
    </rule> 
+0

Das hässliche Gelb kann durch Verwendung einer richtigen Fehlerseite verhindert werden. Es gibt eine Möglichkeit, dies spezifisch für MVC zu tun, und dann eine Möglichkeit, die mit allem von ASP.NET funktioniert. Was ist die URL, wird diese URL von Ihrem System generiert? Oder gibt der Benutzer es direkt in die Adresszeile ein? Oder generiert ein anderes System falsche Links zu Ihrer Site? – mason

+0

@ Mason Ich bin mir dessen bewusst und - wie gesagt - ich habe benutzerdefinierte Fehlerbehandlung an Ort und Stelle und es funktioniert * außer * für in diesem Fall. Dies ist jemand, der auf einen Link klickt, der falsch formatiert wurde, um einen Punkt am Ende einzufügen. – RobVious

+0

Aber wer hat den Link erstellt? Deine Seite? Oder eine dritte Partei? – mason

Antwort

2

Sie benötigen zwei Schritte, um dies zu tun. Erstens, um eine Rewrite-Regel die Umleitung zu umgehen:

<rule name="RemoveTrailingDot" stopProcessing="true"> 
    <match url="(.*)\.+$" /> 
    <action type="Redirect" url="{R:1}" /> 
</rule> 

Zweitens die folgende Direktive (gefunden in this related answer)

<system.web> 
    <httpRuntime relaxedUrlToFileSystemMapping="true"/> 
</system.web> 

Die Kommentare zu der entsprechenden Antwort vorschlägt es funktioniert nicht immer, aber es ist Arbeiten für mich auf IIS unter Windows 10.

+0

Nur getestet - immer noch das hässliche gelb zu sehen :( – RobVious

+0

Habe es mit ein bisschen extra arbeiten - siehe aktualisierte Antwort. – Richard

+0

Vielen Dank! Sehr hilfreich. – RobVious

Verwandte Themen