asp.net - 如何在服务器级别定义错误处理逻辑

标签 asp.net iis-7 error-handling

对于网站/vpath,可以处理 Application_Error 事件以在错误被发送回浏览器之前捕获它们。是否也可以在服务器级别以某种方式执行此操作?也就是说,在根级别定义一个方法,如果网站发生错误,该方法将执行,但该网站无论出于何种原因都无法处理该错误。

我知道您可以在根级别使用 web.config 来定义每个 HTTP 状态代码的自定义错误消息。但是,这对我的情况并不理想,因为我想根据应用程序逻辑返回不同类型的内容(即 HTML 或其他内容)。

最佳答案

可以在 applicationHost.config 中注册自定义 http 模块。然后这个模块被目标机器上的所有 IIS 应用程序使用。

1)创建一个带有http模块的签名类库项目:

public class ErrorHandlingModule : IHttpModule
{
    public void Dispose() { }

    public void Init(HttpApplication context)
    {
        context.Error += new EventHandler(context_Error);
    }

    void context_Error(object sender, EventArgs e)
    {
        // handle error
    }
}

2) Install将类库导入 GAC,因此它可以被所有 IIS 应用程序共享。

3) Install http 模块到 applicationHost.config 文件。该文件通常位于 C:\Windows\System32\inetsrv\config 中。此文件夹中的文件只能被64位进程访问(32位操作系统没有这个问题),VS2010看不到它们,但资源管理器可以。 applicationHost.config 片段可能如下所示:
<location path="" overrideMode="Allow">
    <system.webServer>
        <modules>
            <add name="MyModule" preCondition="managedHandler" type="GlobalErrorHandler.ErrorHandlingModule, GlobalErrorHandler, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bfd166351ed997df" />

关于asp.net - 如何在服务器级别定义错误处理逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9781115/

相关文章:

python - 使用条件或错误处理返回字符串中的特定字符

WCF/SSL 在 IIS7 中返回空白页

.net - Asp.net 中的单选按钮列表

javascript - 引用错误: Can't find variable: ValidatorEnable in Safari

c# - 如何延长http响应的时间长度

c# - 编译错误 : [No relevant source lines]

asp.net - IIS 7.5 基于域名的 URL 重写

angular - 无法捕获错误

R 系统函数总是返回错误 127

c# - 压缩完成后立即删除图像文件。如何?