当前位置: 首页 > 知识库问答 >
问题:

msgstr"定位的程序集的清单定义与程序集引用不匹配"

赫连法
2023-03-14

我已将.NET WebAPI应用程序(根据.NET 4.5.2编译并在本地运行)部署到Azure应用程序服务中。

这里抛出的错误是

无法加载文件或程序集“System. Web. Mvc,版本=4.0.40804.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。

我已检查应用服务的 bin 目录中的 System.Web.Mvc.dll 的大小为 505504 字节 - 与我的本地 System.Web.Mvc.dll(版本 4.0.40804.0)的大小完全相同,更改了 2014-09-25,并且在本地工作没有问题。我能说出的唯一区别是我在本地安装了 .NET 4.5.2,而不是像 Azure 那样安装了 4.6.1。

我的Web.config中的条目是

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.40804.0" />
  </dependentAssembly>

但我已经尝试过了

  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>

这也不起作用。

如何编辑应用程序的该条目才能找到 System.Web.Mvc.dll?

作为参考,完整的错误消息是:

“/”应用程序中的服务器错误。

无法加载文件或程序集“System.Web”。Mvc’或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)

说明:执行当前 Web 请求期间发生未经处理的异常。请查看堆栈跟踪,了解有关错误及其在代码中起源位置的详细信息。

异常详细信息:System.IO.FileLoad异常:无法加载文件或程序集System. Web. Mvc或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)

源错误:

在执行当前web请求期间生成了未处理的异常。关于异常的起源和位置的信息可以使用下面的异常堆栈跟踪来识别。

程序集加载跟踪:以下信息有助于确定程序集“System.Web”的原因。无法加载“Mvc”。

WRN:程序集绑定日志记录已关闭。若要启用程序集绑定失败日志记录,请设置注册表值 [HKLM\Software\Microsoft\Fusion!启用日志] (DWORD) 到 1。注意:程序集绑定失败日志记录会降低一些性能。若要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!启用日志]。

堆栈跟踪:

[FileLoadException:无法加载文件或程序集“System.Web.Mvc”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040)]

[FileLoadException: 无法加载文件或程序集“System.Web.Mvc, Version=4.0.40804.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT的例外:0x80131040)]System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark

[configuration errors异常:无法加载文件或程序集的系统。Web.Mvc,Version=4.0.40804.0,Culture=neutral,public key token = 31bf 3856 ad 364 e 35 '或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)]系统。web . configuration . compilation section . loadassemblyhelper(String assembly name,Boolean starDirective) 738系统。web . configuration . compilation section . loadallassembliesfromapdomainbindirectory()217系统。web . configuration . compilation section . load assembly(AssemblyInfo ai)130系统。web . compilation . build manager . getreferenceassemblies(compilation section comp config)170系统。web . compilation . build manager . getprestarnitmethodsfromreferenceassemblies()92系统。web . compilation . build manager . callprestarnitmethods(String prestarnitlistpath,Boolean

[HttpException(0x80004005):无法加载文件或程序集“System.Web.Mvc,版本=4.0.40804.0,文化=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT:0x80131040的异常)]System.Web.HttpRuntime。FirstRequestInit(HttpContext上下文)9947380 System.Web.HttpRuntime。EnsureFirstRequestInit(HttpContext上下文)101 System.Web.HttpRuntime。ProcessRequestNotificationPrivate(IIS7WorkerRequest wr,HttpContext上下文)261

版本信息:Microsoft.NET Framework版本:4.0.30319;ASP。NET版本:4.6.1055.0

共有2个答案

阎德辉
2023-03-14

关于System.Web.Mvc的版本,我也遇到了同样的错误。

在我的例子中,项目之间没有Nuget包不一致,但我的Views文件夹中有一个web.config文件,其中包含以下行:

<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

更改此版本号以匹配当前安装的NuGet包修复了此问题。

林弘文
2023-03-14

您可以在“工具”中检查“程序集版本”

 类似资料:
  • 问题内容: 搜索后我尝试过的事情: 在Web.Config中,对旧版本进行绑定: 问题答案: 好的,我想我现在可以开始工作了。我删除了机器上所有不是我可以找到的最新版本的Newtonsoft.Json.dll,确保在NuGet中拥有最新版本,并进行构建,并确保它是bin文件夹中的最新版本,并且我将更改保留在web.config和.csproj中。现在,我遇到另一个错误,因此它必须正在工作。

  • 搜索后我尝试过的事情: > 编辑我的。csproj文件,以确保只有一个Newtonsoft引用 在我的电脑上搜索每一个Newtonsoft。Json。dll并删除每一个非6.0。1版本并删除我的临时文件夹的内容 修复/重新安装Nuget管理器控制台中的包 它在构建时成功,但在访问站点时出错。 编辑 好的,然后我试着像每个nuget软件包一样重新安装,它似乎又添加了newtonsoft的4.5版本。

  • 问题内容: 您需要有关Java集合排序的帮助。它给了我这个错误: 我的代码如下: 我做错什么了吗? 问题答案: 您不能对未实现该接口的对象列表进行排序。或者说,可以,但你必须提供的方法。 考虑一下:如何在不知道WifiSSID小于或大于另一个WifiSSID的情况下对列表进行排序? 你想用 编辑: 您定义了自己的专有接口,并在中实现了该专有Comparator接口。想要一个实例。它不是您不知道的专

  • Fabric 的核心业务 run 和 sudo 都支持将本地的输入发送至远程,其表现形式和 ssh 基本一致。例如,有时候会遇到需要密码的情况(比如 dump 数据库,或者修改用户密码时),程序会提供近乎直接的交互环境。 然而,由于 ssh 本身的限制,Fabric 对于该功能的实现并不能保证直观。这篇文档将详细地讨论这些问题。 注解 不熟悉 Unix stdout、stderr 管道和终端设备的

  • 我正在尝试将Docusign API集成到我的web应用程序中。我尝试使用信封视图将我重定向到登录页或签名页。但是我想从我的web应用程序中重定向到添加收件人页面,在那里用户可以添加收件人,准备文档并将其发送给签名者。Docusign API中有这样的方法吗?

  • 我试图了解C程序在汇编级别上的样子,所以我运行gdb并在主get_input上使用反汇编。该程序很短,因此我可以更好地遵循它。有2行我不明白。在 main() 中的第一个是: