6

IIS(6.0)のASP.Net(3.5)サイトでアプリケーションエラーが発生すると、HTMLコードがダーティになります。

代わりに自動生成されたXHTMLコードが欲しいのですが、答えを解析するWebサービスに適しています...(カスタムページを作成することに興味はありません)。

それを指定する方法はありますか?

編集:例

たとえば、404エラーに対して生成されたページを次に示します。代わりにクリーンなXHTMLコードが必要ですが、自分で記述したくないのですが、ASP.Netモジュールで実行できますか?

<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>

編集

上記のHTMLはASPXページで生成されたものだと思いますが、見つけられる場所はありますか?インスピレーションを得てXHTMLに翻訳するには、@Remkoの3番目のソリューションを使用してカスタムエラーページを指定します。

4

2 に答える 2

10

ASP.NET でエラーを処理し、応答の内容を制御するには、いくつかの方法があります。注: すべてのメソッドでは、独自のカスタム XHTML コードを記述する必要があります (カスタム ページの記述には関心がないというあなたの発言にもかかわらず)。

  1. ページ レベル: Page_Error イベント ハンドラーをページに追加します。

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

    を呼び出しServer.ClearError()た場合、エラーは ASP.NET によって処理されず、既定のエラー ページが表示されません。

  2. アプリケーション レベル: Application_Error イベント ハンドラーを Global.asax に追加します。

    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. web.configファイルでカスタム エラー ページを指定する

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

詳細な説明については、「 ASP.NET でカスタム エラー報告ページを作成する方法」を参照してください。

于 2012-12-20T14:21:59.217 に答える
3

上記の回答のほとんどのスポット以外に、次を試すことができます。

カスタム エラー用の HTTP モジュール

これを使用して出力 HTML を指定できますが、この方法では完全なカスタム ページは必要ありませんが、少量の HTML を記述する必要があります。

于 2012-12-20T14:35:28.130 に答える