2010-08-09 66 views
1

可能是我此刻的混乱和不知道在这一点或场景应该使用的Application_Error(Global.asax中)或Context_Error(当我们执行HTTP模块)的Application_Error VS Context_Error在asp.net

像。 ..

public void Init(System.Web.HttpApplication context) 

{ context.Error + =新的EventHandler(Context_Error); }

由于

回答

0

在任何情况下或者是一个不可能的方法和这些选项不是100%明确。有不止一种方式来给猫涂一层皮,而且有不同的选择可以让你在设计你的应用时有更大的自由。

如果您的逻辑是特定于您的应用程序的,并且它的工作方式相对本地化,那么您最好将它放在global.asax中。由于应用程序的其他部分发生更改,因此更可能需要更改,而不是整个过程的整体改进。

当你想在多个应用程序中完成错误的逻辑,那么你最好把它放在模块中。由于整个过程发生变化,而不是特定于该应用程序,因此更可能需要更改。

如果您希望行为在没有重新编译的情况下是“可插入的”,那么您需要在模块中执行此操作。但是,还有其他方法可以在不重新编译(配置设置)的情况下打开或关闭功能,因此即使这样也不会被剪切干燥。

+0

嗨乔恩, 感谢您的回答。我正在修改应用程序生成的404 httpexceptions,以更多的SEO方式处理。默认的customErrors是302重定向的第一个不会切断我们的SEO团队的目的:) :)。所以想到扩展Application_Error,或者可能只是写一个自定义的HttpErrorModule。我猜,在这个小事情上,Application_Error就足够了。 感谢您的快速回复队友。 – DotNetInfo 2010-08-09 01:30:40

+0

这又是一回事!有几种不同的方法可用,但最简单的方法是在IIS中使用404的情况下设置要执行的ASPX页面(不会重定向到,这两个选项都可用于最新版本的IIS)。 – 2010-08-09 02:01:05

+0

还有一件事。如果我创建一个新的HttpErroModule并添加它,那么应该执行Global.asax文件中的Application_Error。我不认为它应该,但从你的专业知识再次确认,将不胜感激。 – DotNetInfo 2010-08-09 02:44:16

相关问题