【问题标题】:Simple Injector exception: cannot load dlls when web api project starts简单注入器异常:web api 项目启动时无法加载 dll
【发布时间】:2014-06-10 02:04:11
【问题描述】:

我在启动我的 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);
    }

【问题讨论】:

  • 您的 bin 文件夹中有什么版本的 System.Web.Http?
  • 版本5.0.0.0,我需要使用4.0.0.0吗?
  • 我正在使用 MVC 5 和 WebAPI 2,简单的注入器支持吗?
  • 使用绑定重定向,见here
  • @qujck 成功了,谢谢。

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


【解决方案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>

【讨论】:

  • 谢谢,虽然我使用 nuget 安装 webapi 集成的,但我发现我必须手动完成。
猜你喜欢
  • 2019-02-06
  • 2014-10-13
  • 1970-01-01
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-06
相关资源
最近更新 更多