异常无法加载程序集Cors

时间:2016-04-19 12:52:36

标签: c# .net asp.net-web-api .net-assembly

我正在我的应用中开发webApi。我有一个奇怪的问题。我尝试在独立的控制台应用程序中执行此项目,一切运行良好。我的问题是当我尝试将web api加载到另一个大型应用程序中时。我收到了这个错误:

  

无法加载文件或程序集“Microsoft.Owin,Version = 3.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)

这是我使用它的类:

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll); //HERE IS THE PROBLEM
        HttpConfiguration configuration = new HttpConfiguration();
        configuration.Routes.MapHttpRoute(
            name: "TestApi",
            routeTemplate: "test/{controller}/{id}",
            defaults: new {id = RouteParameter.Optional}
        );
        app.UseWebApi(configuration);
    }
}

我调试了,问题出在我使用app.UserCors(CorsOptions.AllowAll)函数时。我使用 Nuget 包管理器安装了Microsoft CORS包,我尝试更新它但仍然出现此错误。我在这里搜索Can't load System.Web.Cors assembly after call to Microsoft.Owin.Cors,但解决方案对我不起作用。

我有这个app.config文件:

  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="3.0.1" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Cors" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
  </dependentAssembly>
</assemblyBinding>

问题可能在System.Web.Cors中?我有点失落。

1 个答案:

答案 0 :(得分:2)

在您的配置中,您说

<dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
  </dependentAssembly>

这意味着您使用的是Microsoft.Owin版本2.0.2.0 但是你的一些代码(我认为是IAppBuilder的实现)要求&#34; Microsoft.Owin,Version = 3.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#34;

如果你使用NuGet,升级包,如果没有 - 你应该下载3.0.1.0版本,更新参考和更改配置文件