Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Web.MVC中的简单喷油器,未发生喷油_C#_Asp.net Mvc_Simple Injector - Fatal编程技术网

C# Web.MVC中的简单喷油器,未发生喷油

C# Web.MVC中的简单喷油器,未发生喷油,c#,asp.net-mvc,simple-injector,C#,Asp.net Mvc,Simple Injector,我第一次使用简易注射器。获取MVC快速启动版本。在SimpleInjectorializer.cs中,将调用此函数 public static class SimpleInjectorInitializer { /// <summary>Initialize the container and register it as MVC3 Dependency Resolver.</summary> public static void Initialize()

我第一次使用简易注射器。获取MVC快速启动版本。在SimpleInjectorializer.cs中,将调用此函数

public static class SimpleInjectorInitializer
{
 /// <summary>Initialize the container and register it as MVC3 Dependency Resolver.</summary>
   public static void Initialize()
   {
      // Did you know the container can diagnose your configuration? 
     // Go to: https://simpleinjector.org/diagnostics
     var container = new Container();

     InitializeContainer(container);    
                container.RegisterMvcControllers(Assembly.GetExecutingAssembly());

            container.Verify();

      DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
  }

  private static void InitializeContainer(Container container)
  {                 
   // For instance:
   container.Register<IQueryProcessor, QueryProcessor>(Lifestyle.Singleton);
   container.RegisterInitializer<WebApiController>(
                p=> p.QueryProcessor = container.GetInstance<IQueryProcessor>());
   }

WebApiController.cs. Injection doesn't happen. 

public class WebApiController : ApiController
{

 public IQueryProcessor QueryProcessor { get; set; }

 public WebApiController(IQueryProcessor queryProcessor)
 {

   QueryProcessor = queryProcessor;

 }
公共静态类SimpleInjector初始值设定项
{
///初始化容器并将其注册为MVC3依赖项解析器。
公共静态void Initialize()
{
//您知道容器可以诊断您的配置吗?
//转到:https://simpleinjector.org/diagnostics
var container=新容器();
初始化容器(容器);
container.RegisterMvcControllers(Assembly.getExecutionGassembly());
container.Verify();
SetResolver(新的SimpleInjectDependencyResolver(容器));
}
私有静态void InitializeContainer(容器)
{                 
//例如:
容器。登记(生活方式。单身);
container.RegisterInitializer(
p=>p.QueryProcessor=container.GetInstance());
}
WebApiController.cs.注入没有发生。
公共类WebApicController:ApicController
{
公共IQueryProcessor查询处理器{get;set;}
公共WebApicController(IQueryProcessor查询处理器)
{
查询处理器=查询处理器;
}

MVC控制器与ASP.NET5(MVC 6)之前的WebAPI控制器不同,因为MVC控制器实现了
IController
接口,而Web API控制器实现了
IHttpController
接口

Simple Injector可以很容易地覆盖默认的
IHttpController
实例化

使用System.Web.Http;
使用SimpleInjector;
使用SimpleInjector.Integration.WebApi;
//这是Global.asax文件中的应用程序启动事件。
受保护的无效应用程序\u Start(){
//像往常一样创建容器。
var container=新容器();
//注册您的类型,例如使用RegisterWebapireRequest
//集成包的扩展:
container.RegisterWebApiRequest();
//这是集成包中的扩展方法。
容器.RegisterWebApp控制器(全局配置.Configuration);
container.Verify();
GlobalConfiguration.Configuration.DependencyResolver=
新的SimpleInjectorWebApidencyResolver(容器);
//这里是您常用的Web API配置资料。
}

对于Web API,您肯定还需要做更多的事情。您是否已经有了为Web API设置某些内容的代码?
RegisterInitializer
可能是一些测试代码,但最好不要完全使用属性注入。请坚持使用构造函数注入。然后我有了无法加载文件或程序集'System.Web.Http,版本=4.0.0.0"但是通过添加绑定重定向很容易修复。谢谢!@kay00:NuGet软件包管理器通常会自动为您修复绑定重定向,但由于某些原因,这种情况并不经常发生。有时卸载软件包并重新安装是使其重新工作所需的全部,在其他情况下,您必须修复b手动绑定。
SimpleInjector.Integration.WebApi
依赖于
Microsoft.AspNet.WebApi.Core
,但如果我们使用的是ASP.NET而不是ASP.NET Core,为什么它依赖于Core?或者WebApi.Core不是ASP.NET Core中的Core?
using System.Web.Http;
using SimpleInjector;
using SimpleInjector.Integration.WebApi;

// This is the Application_Start event from the Global.asax file.
protected void Application_Start() {
    // Create the container as usual.
    var container = new Container();

    // Register your types, for instance using the RegisterWebApiRequest
    // extension from the integration package:
    container.RegisterWebApiRequest<IUserRepository, SqlUserRepository>();

    // This is an extension method from the integration package.
    container.RegisterWebApiControllers(GlobalConfiguration.Configuration);

    container.Verify();

    GlobalConfiguration.Configuration.DependencyResolver =
        new SimpleInjectorWebApiDependencyResolver(container);

    // Here your usual Web API configuration stuff.
}