C#语言有很多值得学习的地方,这里我们主要介绍C# Global.asax文件,包括介绍defaultRedirect属性的值中引用默认的错误页等方面。
本节演示如何修改 C# Global.asax文件,以便从不调用 Server.ClearError。因此,错误在作为捕获错误的最后一点的 Web.config 文件中进行处理。
从上一个示例中打开 C# Global.asax文件。将 Server.ClearError 行注释掉,以便确保错误出现在 Web.config 文件中。将所作更改保存到 Global.asax 中。
代码看起来应类似如下形式:
- using System.Diagnostics;
- protected void Application_Error(object sender, EventArgs e)
- {
- Exception objErr = Server.GetLastError().GetBaseException();
- string err ="Error Caught in Application_Error event\n" +
- "Error in:" + Request.Url.ToString() +
- "\nError Message:"+ objErr.Message.ToString() +
- "\nStack Trace:"+ objErr.StackTrace.ToString();
- EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
- //Server.ClearError();
- //additional actions...
- }
必须修改 defaultRedirect 属性中的文件路径,以便它引用相关的 Web 服务器和应用程序名称。因为在此级别捕获的错误会发送到默认的错误页,所以,必须创建一个名为 ErrorStatus.htm 的错误页。请记住,您要使用此方法来控制向用户呈现的内容,因此本示例使用 .htm页作为错误页。将以下代码添加到 ErrorStatus.htm 中:
- custom Error page!
- You have been redirected here from the <customErrors>
- section of the
- Web.config file.
若要测试该代码,请保存这些文件,生成项目,然后在浏览器中查看 AppEvent.aspx。请注意,在引发错误时,您将被重定向到ErrorStatus.htm 页。
尽管您可在部分中defaultRedirect属性的值中引用默认的错误页,但是您还可根据引发的 HTTP 错误代码指定要重定向到的特定页。 子元素允许使用此选项。
请注意, 部分包括设置为 On 的 mode 属性。mode 属性用于控制错误重定向发生的方式。例如,如果您正开发应用程序,则很可能希望查看实际的 ASP.NET 错误信息,并且不希望被重定向到更用户友好的错误页。mode 属性包括以下设置:
◆on:未被处理的异常将用户重定向到指定的 defaultRedirect 页。此模式主要用于生产。
◆off:用户收到异常信息而不是被重定向到 defaultRedirect 页。此模式主要用于开发。
◆remoteonly:只有在本地计算机上访问该站点的用户(通过使用 localhost)才能收到异常信息。所有其他用户都被重定向到defaultRedirect 页。此模式主要用于调试。
疑难解答
在 Windows 2000 和 Windows XP 上的默认安装中,ASP.NET 在辅助进程中运行 Web 应用程序代码。此进程的标识默认为名为 ASPNET 的无特权本地帐户。在 ASP.NET 的 beta 版中,该进程的标识是 System,这是一个功能强大的管理员帐户,拥有许多计算机特权。以上介绍C# Global.asax文件。
【编辑推荐】