7

我制作了一个网络应用程序,我在其中使用了一个模块,该模块在没有“www”网址(http://example.com/)的情况下重定向到“www”网址(http://www.example.com/)。但是由于我在共享托管服务器上,我没有实现 HttpModule 的权限,所以我尝试了使用 Global.asax 文件的相同模块代码。这样可行!

我使用以下 (Application_BeginRequest()) 事件来实现我的 HttpModule 功能。

void Application_BeginRequest()
{
  //module code
}

Global.asax 文件中的模块和应用程序运行良好且正确,但我担心性能。

为什么我们在 asp.net 中使用 HTTPModules 如果我们可以使用 Global.asax 文件实现相同的功能。两者之间是否存在性能差异。或者在使用 Global.asax 文件而不是 HttpModule 时我需要担心的任何区别?

请解释!

4

2 回答 2

4

Global.asax 继承自 HTTPApplication,HTTPModules 必须实现 IHTTPInterface。
HTTPModules Init 方法获取传入的 HTTPApplication 对象。
在 Init 方法中,您可以挂钩到 HTTPApplication 的事件。

我建议尽可能使用 HTTPModules。
特别是如果您制作收缩包装的软件,客户可以用他们自己的替换您的 global.asax。

于 2009-02-21T15:21:15.683 回答
2

几乎没有区别。HTTPModules 的重点是为了清晰和分离。人们通常会通过几个 HTTPModule 来管道请求,这是 global.asax 无法获得的。

于 2009-02-21T15:07:25.873 回答