Asp.net 是否可以编写一个基类来处理所有页面中的nullReferenceException?

Asp.net 是否可以编写一个基类来处理所有页面中的nullReferenceException?,asp.net,.net,c#-4.0,nullreferenceexception,base-class,Asp.net,.net,C# 4.0,Nullreferenceexception,Base Class,我正在使用.NETFramework4.0、纯asp.net和webform。目前我有一个基类来处理所有的参数传递和重定向。我想知道是否有可能编写一个基类来一次性处理所有页面的NullRefeenceException,比如将最终用户重定向到某个地方或显示特定的错误消息 场景:例如,某些页面必须附带参数,如果未捕获参数,我希望将它们重定向到某个位置。当服务器处理NullReferenceException时,将创建500响应。根据需要重定向所有server 500邮件。这本指南会有帮助 当服务器

我正在使用.NETFramework4.0、纯asp.net和webform。目前我有一个基类来处理所有的参数传递和重定向。我想知道是否有可能编写一个基类来一次性处理所有页面的NullRefeenceException,比如将最终用户重定向到某个地方或显示特定的错误消息


场景:例如,某些页面必须附带参数,如果未捕获参数,我希望将它们重定向到某个位置。

当服务器处理NullReferenceException时,将创建500响应。根据需要重定向所有server 500邮件。这本指南会有帮助


当服务器处理NullReferenceException时,将创建一个500响应。根据需要重定向所有server 500邮件。这本指南会有帮助


您可以尝试控制ProcessRequest。您需要测试它,看看它是否能够完成您要求的工作,但这是捕获页面所有错误的一个好方法

public override void ProcessRequest(HttpContext context)
{
    try
    {
        base.ProcessRequest(context);
    }
    catch (Exception x)
    {
        // handle here your error from the page...
    }
}
还有一些注释 我在一个关键页面上使用了这段代码,但我并没有在我的所有页面上都使用它。即使可以捕获错误,有时除了再次抛出最终错误,您在这里也无能为力,因此最好将未知和未处理的错误从
globa.asax
Application\u error
,并在页面上确保使用
try/catch
在发生错误的地方进行处理

之后有人认为使用它可能不是一个好的做法。好的做法是在你可能投掷的地方使用try/catch,而不是像那样的普通方法

最后 当用户在渲染结束前关闭连接时,这里也会出现抛出错误,但如果记录错误,则在应用程序上会出现相同的错误。\u错误-这不是页面错误

    Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> 
   System.Web.HttpException: The remote host closed the connection. 
   The error code is 0x80072746.

您可以尝试控制ProcessRequest。您需要测试它,看看它是否能够完成您要求的工作,但这是捕获页面所有错误的一个好方法

public override void ProcessRequest(HttpContext context)
{
    try
    {
        base.ProcessRequest(context);
    }
    catch (Exception x)
    {
        // handle here your error from the page...
    }
}
还有一些注释 我在一个关键页面上使用了这段代码,但我并没有在我的所有页面上都使用它。即使可以捕获错误,有时除了再次抛出最终错误,您在这里也无能为力,因此最好将未知和未处理的错误从
globa.asax
Application\u error
,并在页面上确保使用
try/catch
在发生错误的地方进行处理

之后有人认为使用它可能不是一个好的做法。好的做法是在你可能投掷的地方使用try/catch,而不是像那样的普通方法

最后 当用户在渲染结束前关闭连接时,这里也会出现抛出错误,但如果记录错误,则在应用程序上会出现相同的错误。\u错误-这不是页面错误

    Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> 
   System.Web.HttpException: The remote host closed the connection. 
   The error code is 0x80072746.

在Global.asax中,处理应用程序错误。

在Global.asax中,处理应用程序错误。

您可以连接到每个未修补的NullReference异常,具体取决于您要执行的操作

例如,您可以使用global.asax,具体到应用程序错误事件。您可以获取对异常的引用,查找类型并在那里执行重定向


获取异常的另一种方法是编写自定义错误提供程序,但这不会使您能够执行重定向。

您可以连接到每个未修补的NullReference异常,具体取决于您要执行的操作

例如,您可以使用global.asax,具体到应用程序错误事件。您可以获取对异常的引用,查找类型并在那里执行重定向



获取异常的另一种方法是编写自定义错误提供程序,但这并不能让您执行重定向。

重定向到错误页面是个坏主意。您应该使用适当的错误代码(在您的情况下是5xx,因为它是服务器中的一个错误)就地显示错误。还有一个重要的问题是,您使用的是asp.net的哪一部分。普通的asp.net、WebForms、asp.net MVC或其他框架?@CodeInChaos我在示例ADO中添加的,您仍然没有说明您使用的是哪个框架。Asp.net MVC中的输入验证与WebForms等的工作方式非常不同。OPP对此深表歉意,并再次更新。我不知道这可能是一个非常重要的问题,会导致分歧。谢谢你告诉我。重定向到错误页面是个坏主意。您应该使用适当的错误代码(在您的情况下是5xx,因为它是服务器中的一个错误)就地显示错误。还有一个重要的问题是,您使用的是asp.net的哪一部分。普通的asp.net、WebForms、asp.net MVC或其他框架?@CodeInChaos我在示例ADO中添加的,您仍然没有说明您使用的是哪个框架。Asp.net MVC中的输入验证与WebForms等的工作方式非常不同。OPP对此深表歉意,并再次更新。我不知道这可能是一个非常重要的问题,会导致分歧。谢谢你告诉我。太好了,这可能是我要找的东西!你有什么例子吗?使用3xx重定向是个坏主意。您应该直接返回一个错误代码,并呈现一个错误页面。@SƲmmērAƥ这就是示例!和工作代码。我用过,效果很好。@CodeInChaos这是一个例子,你可以随心所欲。我的想法是,我就是答案,这就是捕获页面过程的要点。示例代码的问题是,人们只需进行最小的更改就可以复制和粘贴它。所以我尽量避免不好的做法,尤其是在示例代码中。太好了,这可能是我想要的!你有什么例子吗?使用3xx重定向是个坏主意。您应该直接返回一个错误代码,并呈现一个错误页面。@SƲmmērAƥ这就是示例!和工作代码。我用过,效果很好。@CodeInChaos这是一个例子,你可以随心所欲。我的想法是,我的答案,重点是捕获页面的过程。示例cod的问题