当前位置:  开发笔记 > 后端 > 正文

依赖注入HTTPModule

如何解决《依赖注入HTTPModule》经验,为你挑选了1个好方法。

谷歌/ MyBrain让我失望.如果不使用框架(我永远不会超过我的同事),如果您(程序员)无法控制创建实例,那么如何将依赖注入HTTPModule?

我们是否正在攻击自定义的web.config部分+反射或者是否有更清洁的东西我没有看到?

例如,使用Karl Seguin的示例模块作为基础,并假设执行ILogger..Net 2.0 fwiw

public class ErrorModule : IHttpModule
{
    private ILogger injectedLogger; //how to set this?

    public void Init(HttpApplication application)
    {
        application.Error += (new EventHandler(this.application_Error));
    }

    public void Dispose() { /* required by IHttpModule */ }

    private void application_Error(object sender, EventArgs e)
    {
        this.injectedLogger.doStuff(e.ExceptionObject as Exception);
    }
}

这样的事情让我意识到我有多鄙视MSDN.



1> annakata..:

我偶然发现了一个程序化的解决方案.完全消除web.config引用,如果您对生命周期非常小心,可以将模块添加到global.asax中.

在global.asax中添加:

public static ErrorModule myErrorModule;

public override void Init()
{
    base.Init();
    myErrorModule = new ErrorModule(new LogImplementer());
    myErrorModule.Init(this);
}

其中"LogImplementer"实现了ILogger,只需将构造函数添加到httpmodule:

public ErrorModule(ILogger injected)
{
    this.Logger = injected;
}

有一些健康警告.你必须要非常小心你在global.asax中做了什么(我很确定Init()是正确的,但我不确定)并且模块没有添加到只读的HttpApplication.Modules集合中.除此之外,工作得很漂亮.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有