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 3rd 解决方案来指定自定义错误页面。

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