使用Global.asax有什么优点和缺点?

时间:2008-09-25 20:03:52

标签: asp.net

让我们收集一些评估global.asax正确使用的技巧。

10 个答案:

答案 0 :(得分:3)

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

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

我觉得这样的东西还可以,但我不会在那里放更多东西。

答案 1 :(得分:3)

如果您的会话和应用程序初始化代码非常小且特定于应用程序,则使用起来很简单。如果要重用代码,使用HttpModule会更有用,例如设置URL重写,重定向或身份验证的规则。 HttpModule可以涵盖Global.asax文件的所有内容。也可以使用.config。

轻松删除和添加它们

答案 2 :(得分:2)

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

答案 3 :(得分:2)

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

我将它用于全局错误处理,并在mvc中设置路由。您不希望在那里编写全局page_init代码。

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

答案 4 :(得分:1)

这是抓住会话启动,甚至请求启动的好地方。其他人已经提到错误处理方面,虽然要小心从nonasp.net线程(例如,线程池或自定义线程)抛出的异常,因为它们将绕过global.asax处理程序。我个人总是有一个,我认为它只是管道的一部分。

答案 5 :(得分:1)

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

答案 6 :(得分:1)

使用Global.asax与HttpModule相比的结果:您将很难编写难以重用的代码,因为它与特定应用程序的关系过于紧密。

答案 7 :(得分:0)

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

编辑:在单独的类库中使用HttpApplication类(global.asax parent)也可以提升可重用性。虽然我同意使用HttpModules更适合于许多任务,但是这仍然有很多用途,对于一个更干净的代码。

答案 8 :(得分:0)

我还没有真正使用过Global.asax。我一直在经典ASP中使用它,但这主要与某些配置有关,比如数据库连接字符串等。 .net中的配置使这些事情变得更加容易。

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

答案 9 :(得分:0)

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