C# 在ASP.net/C中将异常传递到错误屏幕#

C# 在ASP.net/C中将异常传递到错误屏幕#,c#,asp.net,error-handling,C#,Asp.net,Error Handling,来自桌面背景,我不确定如何将捕获到的异常传递到错误页面,以避免用户看到标准异常屏幕 我的一般问题是如何将异常从页面X传递到ASP.net中的错误页面?我认为您可以使用全局.asax--应用程序\u异常处理程序捕获异常,然后将其存储在错误页面中显示 但实际上,错误页面不应该包含可能导致另一个错误的代码。它应该是简单的“哎呀!出了点问题”页面 如果需要有关错误的详细信息,请使用Windows的事件查看器或使用一些日志机制。我建议使用web.config中的customErrors部分: <

来自桌面背景,我不确定如何将捕获到的异常传递到错误页面,以避免用户看到标准异常屏幕


我的一般问题是如何将异常从页面X传递到ASP.net中的错误页面?

我认为您可以使用全局.asax--应用程序\u异常处理程序捕获异常,然后将其存储在错误页面中显示

但实际上,错误页面不应该包含可能导致另一个错误的代码。它应该是简单的“哎呀!出了点问题”页面


如果需要有关错误的详细信息,请使用Windows的事件查看器或使用一些日志机制。

我建议使用web.config中的customErrors部分:

   <customErrors mode="RemoteOnly" defaultRedirect="/error.html">
      <error statusCode="403" redirect="/accessdenied.html" />
      <error statusCode="404" redirect="/pagenotfound.html" />
   </customErrors>


然后使用来发送电子邮件和/或记录错误。

使用asp.net中的自定义错误页,您可以在web.config的部分找到它。

我使用的模式是在try/catch块中记录错误(使用log4net),然后执行响应。重定向到简单的错误页。这假设您不需要显示任何错误详细信息


如果需要在单独的页面上显示异常详细信息,则可能需要查看Server.GetLastError。我在global.asax(在应用程序错误事件中)中使用它来记录未处理的异常并重定向到错误页面。

我们很幸运地在global.asax应用程序错误事件中捕获了异常,将它们存储在会话中,并重定向到错误页面。或者,您可以对错误消息进行编码,并将其传递到查询字符串中的错误页面。

您也可以从

Server.GetLastError();

我们在Global.asax文件中捕获异常,将其存储在会话中,然后将用户重定向到错误页面,在该页面中,我们获取会话变量的异常,并向用户显示消息信息

    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }

在向用户显示错误消息之前,我们会先记录错误消息。

我讨厌激情洋溢地说“哎呀!出问题了”。在错误报告页面周围应该有一些琐碎的错误处理,最终可能会级联到“Oops”页面,但如果您到达该Oops页面,则不应该运行任何东西。我想给telligent的编码员和其他犯下这一罪行的人一个楔子和一个漩涡,同时。@stimpy77这取决于。。。有时这就是事件日志和ELMAH的用途。。。错误页面只是为了让用户平静下来。我尝试过这个,但是当我在global.asax和aspx页面上使用Session[“error”]时,它不起作用。
    protected void Application_Error(object sender, EventArgs e)
    {
        Exception ex = Server.GetLastError();
        this.Session[CacheProvider.ToCacheKey(CacheKeys.LastError)] = ex;
    }