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

Dav*_*eer 5 .net c# azure

有趣的依赖问题...

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

在此处输入图片说明 它在IIS Express上本地工作

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

在此处输入图片说明

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>
Run Code Online (Sandbox Code Playgroud)

编辑 Bruce Chen的答案将我引向Kudu的方向(Azure-开发工具,高级工具)

在此处输入图片说明

我下载了Owin dll,并且版本错误,即3.0.0

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

git clean -xfd(请小心)

然后重建

小智 8

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

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

      <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>
Run Code Online (Sandbox Code Playgroud)

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

  • 这是错误的:) &lt;dependentAssembly&gt; &lt;assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35"culture="neutral"/&gt; &lt;bindingRedirect oldVersion="0.0.0.0-3.1.0.0" newVersion="3.1.0.0" /&gt; &lt;/dependentAssembly&gt; 让所有对一个dll的引用都引用最新版本的Owin (2认同)

Bru*_*hen 5

无法加载文件或程序集“Microsoft.Owin,Version=3.0.1.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。

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

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