0

我们正在做一些自定义身份验证,我正在制作一个自定义 HttpModule 来放入一些身份验证逻辑。由于 HttpModule 需要一个默认构造函数,因此我很难理解如何让依赖注入工作。我已经尝试过属性注入路由,但我得到 命名空间“System.ComponentModel”中不存在类型或命名空间名称“Composition”尝试在属性上使用 [Import] 属性时。我已经引用了 System.ComponentModel.Composition 并以完全相同的方式将 [Import] 属性用于不同的类(自定义属性),我不确定为什么它会为自定义 HttpModule 提供此消息。也许这无论如何都不是最好的解决方案(我仍然是 DI 菜鸟),所以我认为现在是刹车并寻求帮助的好时机。

我的问题是:如何使用 Simple Injector 正确地为自定义 HttpModule 进行依赖注入?

当前代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.Composition;

namespace CustomAuthMVC.App_Code
{
public class CustomHttpModule : IHttpModule
{
    [Import]
    public IAuthService AuthService { get; set; }

    public void Application_AuthenticateRequest(object sender, EventArgs e) { }

    public void Dispose() { }

    public void Init(HttpApplication application)
    {
        application.AuthenticateRequest += this.Application_AuthenticateRequest;
    }
}

我正在使用简单的注射器。该项目位于 .NET Framework 4.6.1、MVC 中。CustomHttpModule 位于 App_Code 目录中。AuthService 类型在 Global.asax 中注册为单例。它也用于应用程序中的其他地方,需要保持原样。

4

0 回答 0