ASP WebForms与System.Web.Http API Controllers-控制器中的构造函数依赖注入不起作用
创始人
2024-11-11 19:00:35
0

在ASP WebForms中,控制器是通过System.Web.Http API Controllers来实现的。然而,控制器中的构造函数依赖注入可能不起作用,这可能是由于以下原因:

  1. 控制器类没有通过依赖注入容器进行实例化。在ASP WebForms中,通常需要手动实例化控制器类,而不是由依赖注入容器自动解析和实例化。

解决方法是使用依赖注入容器(如Unity、Autofac、Ninject等)来实例化控制器类。以下是使用Autofac作为依赖注入容器的示例代码:

// 在Global.asax.cs中注册依赖注入容器
protected void Application_Start(object sender, EventArgs e)
{
    // 创建容器构建器
    var builder = new ContainerBuilder();

    // 注册依赖项
    builder.RegisterType().As();

    // 注册控制器
    builder.RegisterControllers(typeof(Global).Assembly);

    // 构建容器
    var container = builder.Build();

    // 设置依赖解析器
    DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
// 控制器类
public class MyController : ApiController
{
    private readonly IMyDependency _myDependency;

    // 通过构造函数注入依赖
    public MyController(IMyDependency myDependency)
    {
        _myDependency = myDependency;
    }

    // ...
}
  1. 控制器类的构造函数参数类型没有正确注册到依赖注入容器中。确保所有构造函数参数类型都在依赖注入容器中正确注册,以便容器可以解析并提供相关的依赖项。

解决方法是在依赖注入容器的注册配置中,将控制器类的构造函数参数类型与其相应的实现类型进行映射。以下是使用Autofac实现的示例代码:

// 在Global.asax.cs中注册依赖注入容器
protected void Application_Start(object sender, EventArgs e)
{
    // 创建容器构建器
    var builder = new ContainerBuilder();

    // 注册依赖项
    builder.RegisterType().As();

    // 注册控制器,并解析构造函数参数的依赖项
    builder.RegisterApiControllers(typeof(Global).Assembly)
           .PropertiesAutowired();

    // 构建容器
    var container = builder.Build();

    // 设置依赖解析器
    GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
}
// 控制器类
public class MyController : ApiController
{
    public IMyDependency MyDependency { get; set; }

    // ...
}

通过以上解决方法,你可以在ASP WebForms中的System.Web.Http API Controllers中实现构造函数依赖注入。这样,你就可以正确地注入和使用依赖项。

相关内容

热门资讯

揭幕透视!pokemmo内置修... 揭幕透视!pokemmo内置修改器!确实真的是有辅助工具(详细教程)-哔哩哔哩1、进入到pokemm...
分享透视!epoker有透视吗... 分享透视!epoker有透视吗!都是有辅助工具(的确有挂)-哔哩哔哩epoker有透视吗是不是有人用...
解谜透视!红龙poker辅助器... 解谜透视!红龙poker辅助器免费观看!竟然真的有辅助教程(有挂猫腻)-哔哩哔哩1、完成红龙poke...
详细透视!德州圈脚本!总是是有... 详细透视!德州圈脚本!总是是有辅助app(真实有挂)-哔哩哔哩1、金币登录送、破产送、升级送、活动送...
有挂透视!德州局脚本!一贯一直... 有挂透视!德州局脚本!一贯一直总是有辅助教程(存在有挂)-哔哩哔哩德州局脚本能透视中分为三种模型:德...
关于透视!pokemmo脚本最... 您好,pokemmo脚本最新版这款游戏可以开挂的,确实是有挂的,需要了解加去威信【485275054...
有挂透视!哈糖大菠萝破解器!一... 有挂透视!哈糖大菠萝破解器!一贯一直都是有辅助神器(有挂教学)-哔哩哔哩1、哈糖大菠萝破解器破解器简...
了解透视!拱趴大菠萝挂哪里!果... 了解透视!拱趴大菠萝挂哪里!果然一直都是有辅助攻略(有挂细节)-哔哩哔哩1、很好的工具软件,可以解锁...
必备透视!扑克之星辅助!切实是... 必备透视!扑克之星辅助!切实是有辅助软件(有挂解惑)-哔哩哔哩一、扑克之星辅助游戏安装教程牌型概率发...
必备透视!sohoo竞技联盟辅... 必备透视!sohoo竞技联盟辅助器!总是是有辅助攻略(存在有挂)-哔哩哔哩1)sohoo竞技联盟辅助...