DotNetOpenAuth 导致无法加载 Assembly System.Web.WebPages.Razor

DotNetOpenAuth causing a can not load Assembly System.Web.WebPages.Razor(DotNetOpenAuth 导致无法加载 Assembly System.Web.WebPages.Razor)

本文介绍了DotNetOpenAuth 导致无法加载 Assembly System.Web.WebPages.Razor的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

My local version of my code runs just fine. But when I do a web deploy I am getting the following exception:

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

Could not load file or assembly 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

相关的堆栈跟踪行是

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

[FileLoadException: Could not load file or assembly 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)] Microsoft.Web.WebPages.OAuth.PreApplicationStartCode.Start() +0

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

This seems to be related to the fact that the Nuget Package for Razor is version 3.0 but the DotNetOpenAuth package uses version 2.0

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

Also the issue only happens when I deploy to my Azure website. (I am currently using the free website and not the webrole/workrole stuff). I use a webdeploy and it was working ok in previous versions but I believe this has something to do with nuget packages.

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

Update: I am unable to solve this. I have tried to deploy via FTP that deleted the whole folder prior to deployment but this did not work either. Nuget has been a nightmare.

推荐答案

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

Place this in your web.config file. It will cause the framework to redirect dependencies to the appropriate version.

<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> 部分中的这一行更改为以下内容

As I revisit this post because of a XML error pointed out in the above syntax, there are a few other places that most likely need updated as well. First, in the primary web.config, this line should be changed in the <appSettings> section to the following

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

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

Also, there is a web.config in the views folder that should be updated to the following

 <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.我相信我拥有上面列出的所有这些位置.

Basically, you want to identify all of the places that mention razor 2.0.0.0 and change those to 3.0.0.0 in addition to the assembly redirect. I believe I have all of those locations identified above.

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

If you update the entire MVC framework, there is additional work that would need to be performed as well, but that is not the basis for the question.

这篇关于DotNetOpenAuth 导致无法加载 Assembly System.Web.WebPages.Razor的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本文标题为:DotNetOpenAuth 导致无法加载 Assembly System.Web.WebPages.Razor

基础教程推荐