2008-09-25 101 views

回答

3

如果您的会话和应用程序初始化代码非常小且特定于应用程序,则使用起来很简单。如果您想重用代码,比如设置URL重写,重定向或认证规则,使用HttpModule会更有用。 HttpModule可以覆盖Global.asax文件可以包含的所有内容。他们也可以使用你的.config来移除和添加。

3

我以前用它来捕获应用程序级别的错误,并在用户会话到期时执行某些操作。

我也倾向于使用它来提供从web.config读取值的静态属性。

我认为这样的东西没问题,但我不会在那里放更多的东西。

0

Global.asax可以继承自己的继承httpapplication的类。为您提供更多选择,并将您可能拥有的全部代码放入类库中。

编辑:有你的HttpApplication类(global.asax父)在一个单独的类库中也可以提高可重用性。虽然我同意使用HttpModules更适合于许多任务,但这仍然有许多用途,例如更简洁的代码。

0

我还没有真正使用Global.asax。我一直使用它在传统的ASP中是等价的,但主要与数据库连接字符串等特定配置有关。 .net中的配置使得很多这些事情变得更容易。

但是如果你想实现应用程序和会话级别的事件,这就是你需要去的地方。

1

这是一个很好的地方抓住会议开始,甚至要求发起。其他人提到了错误处理方面的问题,但要小心从非asp.net线程(例如线程池或自定义线程)抛出的异常,因为它们将绕过global.asax处理程序。就我个人而言,我总是有一个,我认为它只是管道的一部分。

2
  • 初始化ASP.NET MVC。 :)
  • 自定义用户验证。
  • 依赖注入,如扩展Ninject HttpApplication。
1

我曾经使用Global.asax来处理诸如错误处理等事情,但是,我已经使用HttpModules来替换它,因为我可以将它从一个项目复制到另一个项目,而无需编辑global.asax。

2

它是一种僵硬的饮料,只是要小心不要喝太多,你会没事的。

我用它进行全局错误处理,并在mvc中设置路由。虽然你不想在那里写全局的page_init代码。

如果您坚持使用应用程序级别的事件,并使大多数逻辑实际存在于在这些事件中被调用的类中,那么使用全局构造就没有问题。

1

使用Global.asax与HttpModule相比:你会被诱惑编写难以重用的代码,因为它将被绑定到特定的应用程序。

0

Global.asax中的Session_Start事件是初始化会话变量的好地方。

相关问题