无法将文件或程序集Microsoft.Owin 3.0.0加载到3.0.1

时间:2016-09-01 16:12:11

标签: c# .net azure

有趣的依赖性问题......

VS2015.3,.NET45将Microsoft.Owin从3.0.0更新到3.0.1(跟踪此更新是个问题 - 想要安装https://www.nuget.org/packages/IdentityServer3.AccessTokenValidation/

enter image description here 它在IIS Express上本地工作

但发布到Azure网站:(我直接从VS删除目标上的其他文件)。重新启动并删除了azure webserver中的所有文件。

enter image description here

web.config转换看起来没问题

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

修改 Bruce Chen的回答指出了我的方向Kudu(Azure - 开发工具,高级工具)

enter image description here

我下载了Owin dll,这是错误的版本,即3.0.0

要修复我从我的解决方案中清除了所有包工件

git clean -xfd(小心)

然后重建

5 个答案:

答案 0 :(得分:3)

我也浪费了几个小时,因为nuget安装的引用版本为3.0.0,尽管nuget包被标记为3.0.1

使旧版本比新版本更新解决了我的问题:

&#13;
&#13;
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
&#13;
&#13;
&#13;

*编辑:我认为(但不确定)我的版本仍然是3.0.0.0的原因是因为bin文件夹被我的repo捕获并且nuget不想写在dll上

答案 1 :(得分:2)

  

无法加载文件或程序集&#39; Microsoft.Owin,Version = 3.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35&#39;或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。

通常,这意味着.NET程序集加载程序无法找到具有引用的特定版本的程序集。请确保您的Azure网站中可以找到版本3.0.1.0的程序集,并且该版本通过KUDU或FTP客户端与web.config中的定义匹配。

正如您所说,它在IIS Express上本地运行,请尝试通过KUDU或FTP客户端手动将您的网站内容部署到Azure,并找出它是否有效。

答案 2 :(得分:1)

它需要一个新版本,而不是您当前拥有的版本。 如果您使用的是Visual Studio,请右键单击项目->管理NuGet软件包->更新->选择Owin nuget->单击“更新”。 截至今天,最新版本为4.0.0。 希望一切正常!

答案 3 :(得分:0)

在这里仅作评论,当我升级到4.1.0.0时遇到了这种类型的错误,而我的问题出在Web.config上,那里我仍然有4.0.1.0。因此,.csproj中的内容应与Web.config中的内容匹配。在我同步版本号之前,对我而言,更新或重新安装没有任何作用。

答案 4 :(得分:0)

在NuGet软件包管理器中,检查安装的Microsoft.Owin的版本。然后更新项目文件夹的web.config文件,在web.config中搜索Microsoft.Owin并将“ newVersion”更改为您的NuGet软件包管理器版本。这对我有用。