gpt4 book ai didi

asp.net - 依赖注入(inject) HTTPModule

转载 作者:行者123 更新时间:2023-12-02 15:14:32 25 4
gpt4 key购买 nike

Google/MyBrain 让我失望了。如果不使用框架(我永远不会超越我的同事),鉴于您(程序员)无法控制创建实例,如何将依赖项注入(inject)到 HTTPModule 中?

我们是否要修改自定义 web.config 部分 + 反射,或者是否有一些我没有看到的更干净的东西?

例如使用 Karl Seguin 的 example模块作为基础,并假设实现了 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。

最佳答案

我偶然发现了一个程序化解决方案。完全消除 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 集合中。除此之外,效果非常好。

关于asp.net - 依赖注入(inject) HTTPModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/442918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com