2012-12-10 8 views
6

Wenn ich einen Anwendungsfehler mit einer ASP.Net (3.5) -Website auf IIS (6.0) erhalte, erhalte ich schmutzigen HTML-Code.Wie bekomme ich saubere ASP.Net-Fehlerseiten?

Ich mag würde automatisch generierten XHTML-Code statt haben, wäre es für Web-Service schön sein, die Antwort analysiert ... (Ich bin nicht daran interessiert, durch benutzerdefinierte Seiten zu schreiben).

Gibt es eine Möglichkeit, es zu spezifizieren?

EDIT: Beispiel

Hier zum Beispiel ist die erzeugte Seite für einen 404-Fehler, würde ich sauber XHTML-Code möge stattdessen aber ich will nicht, es selbst zu schreiben, kann ASP.Net Modul, um es zu tun ?

<html> 
    <head> 
     <title>La ressource est introuvable.</title> 
     <style> 
     body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} 
     p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} 
     b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} 
     H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } 
     H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } 
     pre {font-family:"Lucida Console";font-size: .9em} 
     .marker {font-weight: bold; color: black;text-decoration: none;} 
     .version {color: gray;} 
     .error {margin-bottom: 10px;} 
     .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; } 
     </style> 
    </head> 

    <body bgcolor="white"> 

      <span><H1>Erreur du serveur dans l'application '/</b>/MyVirtualDirectory'.<hr width=100% size=1 color=silver></H1> 

      <h2> <i>La ressource est introuvable.</i> </h2></span> 

      <font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif "> 

      <b> Description : </b>HTTP 404. ... 
      <br><br> 

      <b> URL demandée: </b>/MyVirtualDirectory/MyService.aspx<br><br> 

      <hr width=100% size=1 color=silver> 

      <b>Informations sur la version :</b>&nbsp;Version Microsoft .NET Framework :2.0.50727.3053; Version ASP.NET :2.0.50727.3634 

      </font> 

    </body> 
</html> 

EDIT

Ich denke, die oben HTML von einer ASPX-Seite erstellt wurde, gibt es einen Ort, wo ich es finden kann? Um es in XHTML zu übersetzen und zu übersetzen, werde ich @Remko 3rd solution verwenden, um eine benutzerdefinierte Fehlerseite anzugeben.

+0

Geben Sie uns ein Beispiel –

+0

Sie haben keinen separaten Antworttyp für andere Webdienste? –

Antwort

10

Es gibt mehrere Möglichkeiten, Fehler in ASP.NET zu behandeln und den Inhalt Ihrer Antwort zu steuern. Hinweis: Alle Methoden erfordern Sie Ihren eigenen XHTML-Code zu schreiben (trotz Ihrer Bemerkung, dass Sie in Schreiben von benutzerdefinierten Seiten nicht interessiert sind)

  1. auf Seitenebene: einen Page_Error Event-Handler zu Ihrer Seite hinzufügen.

    public void Page_Error(object sender,EventArgs e) 
    { 
        Exception objErr = Server.GetLastError().GetBaseException(); 
        Response.Write("<p>Your perfectly formatted XHTML code.</p>"); 
        Server.ClearError(); 
    } 
    

    Wenn Sie Server.ClearError() rufen Sie den Fehler nicht von ASP.NET behandelt werden und Sie werden die Standardfehlerseite nicht erhalten.

  2. Auf Anwendungsebene: Fügen Sie Global.asax einen Ereignishandler Application_Error hinzu.

    protected void Application_Error(object sender, EventArgs e) 
    { 
        Exception objErr = Server.GetLastError().GetBaseException(); 
        Response.Write("<p>Your perfectly formatted XHTML code.</p>"); 
        Server.ClearError(); 
    } 
    
  3. Geben Sie benutzerdefinierte Fehlerseiten in Ihrer web.config Datei

    <customErrors mode="On" defaultRedirect="myperfectxhtmlerror.aspx" > 
    

Nähere Erläuterungen siehe: How to create custom error reporting pages in ASP.NET

+0

Vielen Dank, ich denke, ich werde die dritte Lösung verwenden, wenn ich die Standardfehlerseite finde und sie in XHTML übersetze (siehe EDIT) – sinsedrix

3

Anders als die ziemlich viel Platz auf Antwort oben Sie könnten versuchen:

HTTP Module for Custom Errors

das Verwenden Sie die Ausgabe HTML angeben können, während diese Art und Weise nicht voll benutzerdefinierte Seiten erfordert es noch benötigen Sie eine kleine Menge von HTML zu schreiben.