Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#ASP.NET HttpModule:HttpApplication事件_C#_Asp.net_Httpmodule_Httpapplication - Fatal编程技术网

C#ASP.NET HttpModule:HttpApplication事件

C#ASP.NET HttpModule:HttpApplication事件,c#,asp.net,httpmodule,httpapplication,C#,Asp.net,Httpmodule,Httpapplication,我的web应用程序中有一个HttpApplication(Global.asax),我使用它来捕获和记录未处理的异常,并设置WebFormURLRouting。这一切都是可行的,但是我想将这段代码移到我的应用程序框架中(即不在Global.asax.cs中) 我刚刚尝试在框架中创建一个HttpApplication类,但似乎无法覆盖事件?无论如何,我相信我可以使用HttpModule来使用这些事件,这样做: 1) 完全消除对Global.asax的需要 2) 这将如何影响扩展,即最终在web服务

我的web应用程序中有一个HttpApplication(Global.asax),我使用它来捕获和记录未处理的异常,并设置WebFormURLRouting。这一切都是可行的,但是我想将这段代码移到我的应用程序框架中(即不在Global.asax.cs中)

我刚刚尝试在框架中创建一个HttpApplication类,但似乎无法覆盖事件?无论如何,我相信我可以使用HttpModule来使用这些事件,这样做:

1) 完全消除对Global.asax的需要

2) 这将如何影响扩展,即最终在web服务器场上运行应用程序

3) 我有HttpHandler来处理其他事情,比如文件上传和文件下载,应该使用多少HttpModule/HttpHandler有限制吗,或者应该以某种方式将它们结合起来以减少开销


在HTTP模块中,收听您从Global.asax知道的事件的任何评论都非常简单,只需在模块的Init方法中连接到HttpApplication实例的事件即可。您不能覆盖HttpApplication的方法,您应该监听它的事件

至于你的其他问题: 1) 是的,在我的许多web项目中,我们不使用Global.asax

2) 这实际上并不影响向上扩展。对于服务器场中的每个web服务器,都需要正确连接HTTPModule。但是,由于这是在web.config中完成的,它应该已经存在了


3) 简短回答:否。对于HttpHandler,它们是根据传入的http请求文件扩展名和/或路径和http方法选择和运行的。在选择特定的处理程序成为一个性能问题之前,您确实需要很多这些。对于HttpModules,您可以选择在每次请求时运行一些代码,显然,如果这些代码需要时间运行,它将影响性能。但是需要花费时间的将是您的代码,而不是通过http模块运行的事实。

在http模块中侦听您从Global.asax知道的事件,就像在模块的Init方法中连接HttpApplication实例的事件一样简单。您不能覆盖HttpApplication的方法,您应该监听它的事件

至于你的其他问题: 1) 是的,在我的许多web项目中,我们不使用Global.asax

2) 这实际上并不影响向上扩展。对于服务器场中的每个web服务器,都需要正确连接HTTPModule。但是,由于这是在web.config中完成的,它应该已经存在了


3) 简短回答:否。对于HttpHandler,它们是根据传入的http请求文件扩展名和/或路径和http方法选择和运行的。在选择特定的处理程序成为一个性能问题之前,您确实需要很多这些。对于HttpModules,您可以选择在每次请求时运行一些代码,显然,如果这些代码需要时间运行,它将影响性能。但是需要花费时间的是您的代码,而不是通过http模块运行的事实。

您可以在框架中创建应用程序类,并在每个应用程序中继承它。因此,您将在框架中拥有所有句柄。
答案是:

  • 可以避免使用应用程序类,但为此添加处理程序不是一个好主意
  • 处理程序的数量通常不影响可伸缩性。但它确实会影响可维护性
  • 由于#2,处理程序的数量应尽量少

  • 您可以在框架中创建应用程序类,并在每个应用程序中继承它。因此,您将在框架中拥有所有句柄。
    答案是:

  • 可以避免使用应用程序类,但为此添加处理程序不是一个好主意
  • 处理程序的数量通常不影响可伸缩性。但它确实会影响可维护性
  • 由于#2,处理程序的数量应尽量少