让我们收集一些评估global.asax正确使用的技巧。
答案 0 :(得分:3)
我之前使用它来捕获应用程序级别的错误,并在用户会话到期时执行某些操作。
我也倾向于使用它来提供从web.config中读取值的静态属性。
我觉得这样的东西还可以,但我不会在那里放更多东西。
答案 1 :(得分:3)
如果您的会话和应用程序初始化代码非常小且特定于应用程序,则使用起来很简单。如果要重用代码,使用HttpModule会更有用,例如设置URL重写,重定向或身份验证的规则。 HttpModule可以涵盖Global.asax文件的所有内容。也可以使用.config。
轻松删除和添加它们答案 2 :(得分:2)
答案 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
事件是初始化会话变量的一个邪恶的好地方。