Simple Injector异常:web api项目启动时无法加载dll

时间:2014-06-10 02:04:12

标签: c# asp.net-web-api simple-injector

启动WebApi应用程序时出现此异常“无法加载文件或程序集System.Web.Http,Version = 4.0.0.0”,我在AppStart方法中注册。

    protected void Application_Start()
    {
        RegisterInjector();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);           

    }
    private void RegisterInjector()
    {

        var container = new Container();
        container.Verify();
        GlobalConfiguration.Configuration.DependencyResolver =
     new SimpleInjectorWebApiDependencyResolver(container);
    }

1 个答案:

答案 0 :(得分:1)

用于Web API的Simple Injector集成包引用System.Web.Http程序集所需的最低版本,并且升级到较新版本的可接受方法是在配置文件中配置强制的bindingRedirect。 NET使用较新的System.Web.Http程序集。通过Nuget安装软件包时,会自动为您管理这些绑定重定向(或至少 - 大部分时间),在这种情况下,您不必手动管理这些重定向。

在其他情况下,您必须手动将绑定直接添加到应用程序的配置文件中:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="b03f5f7f11d50a3a" 
            culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>