2

我的代码的本地版本运行良好。但是当我进行网络部署时,我得到了以下异常:

无法加载文件或程序集“System.Web.WebPages.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自 HRESULT 的异常:0x80131040)

相关的堆栈跟踪行是

[FileLoadException:无法加载文件或程序集“System.Web.WebPages.Razor,版本=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)] Microsoft.Web.WebPages.OAuth.PreApplicationStartCode.Start() +0

这似乎与 Razor 的 Nuget 包是 3.0 版但 DotNetOpenAuth 包使用 2.0 版有关

此外,仅当我部署到我的 Azure 网站时才会出现此问题。(我目前使用的是免费网站,而不是 webrole/workrole 的东西)。我使用 webdeploy,它在以前的版本中运行良好,但我相信这与 nuget 包有关。

更新:我无法解决这个问题。我曾尝试通过 FTP 进行部署,该 FTP 在部署之前删除了整个文件夹,但这也不起作用。Nuget一直是一场噩梦。

4

3 回答 3

3

将它放在您的 web.config 文件中。它将导致框架将依赖项重定向到适当的版本。

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <configuration>

从未来编辑

由于上述语法中指出的 XML 错误,我重新访问这篇文章时,还有一些其他地方很可能也需要更新。首先,在主 web.config 中,此行应在<appSettings>部分中更改为以下内容

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />

此外,views 文件夹中有一个 web.config,应更新为以下内容

 <configSections>
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
      <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
      <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
    </sectionGroup>
  </configSections>

基本上,您想要识别所有提到 razor 2.0.0.0 的地方,并将它们更改为 3.0.0.0 以及程序集重定向。我相信我拥有上面确定的所有这些位置。

如果您更新整个 MVC 框架,还需要执行额外的工作,但这不是问题的基础。

于 2013-11-03T23:42:41.453 回答
2

我有同样的问题。我正在部署到之前部署过 MVC4 应用程序的 Azure 网站。我通过“在目的地删除其他文件”来修复它。

右键单击项目->发布->设置->展开文件发布选项->选中删除目的地的其他文件。

于 2013-12-05T16:50:42.503 回答
0

我使用 Git 部署并且遇到了同样的问题。我没有看到可以在目的地删除其他文件的选项。

我使用 FTP 连接到 Azure 主机,然后删除了/site/wwwroot目录中的所有内容。然后我使用管理门户、部署选项卡,最后使用同步命令(即重新部署)并解决了问题。

于 2014-02-20T16:35:41.540 回答