【问题标题】:Cloud Service Recycle with error System.IO.FileLoadException: Could not load file or assembly 'System.Web.Http, Version=4.0.0.0云服务回收错误 System.IO.FileLoadException: 无法加载文件或程序集 'System.Web.Http, Version=4.0.0.0
【发布时间】:2017-11-19 09:30:32
【问题描述】:

我有一个针对 4.6.1 框架的 Web api 项目,并将其部署为 Azure 上的云服务。部署时出现以下错误。

Web.Config 详细信息:

  <dependentAssembly>
        <assemblyIdentity name="System.Web.Http" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>

来自事件查看器的错误:

无法创建角色入口点:System.TypeLoadException:由于以下异常,无法加载角色入口点: -- System.IO.FileLoadException: 无法加载文件或程序集“System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 文件名:'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'

我的解决方案中没有 System.Web.Http, Version=4.0.0.0 的引用。请让我知道我做错了什么。

【问题讨论】:

    标签: .net azure azure-cloud-services


    【解决方案1】:

    我们可能会从这个blog 得到答案。它详细阐述了根本原因和解决方案。以下是博客中的sn-p。

    解决方案:

    1) 打开项目 bin 文件夹中的 .dll.config。

    2) 检查是否有您需要的 BindingRedirect 条目。如果没有,请遵循以下两个选项之一: a) 复制 web.config 或 app.config 内容(考虑到这两个配置文件之一具有您需要的信息)并将其粘贴到 .dll.config 文件中。 b) 手动创建一个Assembly Binding条目:

    3) 将 .dll.config 文件添加到您的解决方案(与 web.config 或 app.config 相同级别)并将复制到输出目录属性设置为“始终复制”。

    根本原因

    通常,当向您的项目添加新程序集时,Visual Studio 会自动在您的 web.config(Web 角色)或 app.config(工作者角色)中创建 bindingRedirect 条目,以避免错误的程序集版本问题。

    但是,在 Azure 云服务中,来自 web.config 和 app.config 的程序集绑定不起作用,因为 WaIISHost(Web 角色)和 WaWorkerHost(工人角色)无法读取这两个配置文件,相反,他们读取 .dll.config 文件,这是程序集绑定配置需要的文件

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-16
      • 2013-08-13
      相关资源
      最近更新 更多