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

无法加载文件或程序集“System.Web.Razor”或其依赖项之一

公冶宏深
2023-03-14

我在我的网站(web应用程序)中使用了Umbraco 4.11.6。我的网站在localhost上运行(在Visual studio 2012和IIS(v7)上测试过),但是当我在互联网上运行时,出现了一个错误。错误是:

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

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

堆栈跟踪:

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

[FileLoadException:无法加载文件或程序集“System.Web.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT:0x80131040的异常)]System.Reflection.RuntimeAssembly_nLoad(AssemblyName文件名、字符串代码库、证据assemblySecurity、RuntimeAssembly位置提示、StackCrawlMark

[ConfigurationErrorsException:无法加载文件或程序集“System.Web.Razor,Version=2.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。LoadAssemblyHelper(String assemblyName,Boolean starDirective)12761078
System.Web.Configuration.ComplationSection。从AppDomainBinDirectory()加载所有程序集503 System.Web.Configuration.AssemblyInfo。get_AssemblyInternal()142系统.Web编译.BuildManager。GetReferencedAssemblies(CompilationSection compConfig)334
System.Web.Comilation.BuildManager。CallPreStartInitMethods(字符串preStartInitListPath)203
System.Web.Complation.BuildManager。ExecutePreAppStart()152
System.Web.Hosting.HostingEnvironment。初始化(ApplicationManager appManager、IApplicationHost appHost、IConfigMapPathFactory configMapPathFactory、HostingEnvironmentParameters主机参数、PolicyLevel策略级别、Exception appDomainCreationException)1151

[Http异常(0x80004005):无法加载文件或程序集“System. Web. Razor,Version=2.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(HRESULT的异常:0x80131040)]
System. Web. HttpRuntime. FIst请求Init(HttpContext上下文)12881540 System. Web. HttpRuntime. EnsureFinst请求Init(HttpContext上下文)159 System. Web. HttpRuntime. ProcessestNotifiation私有(IIS7Worker请求wr,HttpContext上下文)12722601

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

WebConfig的一部分:

<runtime>
<!-- Old asp.net ajax assembly bindings -->
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Extensions.Design" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

共有3个答案

锺离森
2023-03-14

这些解决方案对我都没有帮助:要么是因为我不能在服务器上安装任何东西,要么是因为不使用Nuget而不直接包含dll。

我使用的解决方案是安装/重新安装名为Microsoft. ASNet. Razor(Microsoft ASP. Net Razor 2.0.20710)的nuget包

颜高朗
2023-03-14

重新安装软件包Microsoft.AspNet.Razor,就像ADreNaLiNe-DJ发布的那样。执行此操作的最佳方法是使用“更新包”命令,因为“安装包”命令不提供强制重新安装的选项,请参阅文档。

PM> Update-Package Microsoft.AspNet.Razor -reinstall
乌骏
2023-03-14

有很多方法可以解决这个问题:

> < li>

在web服务器上安装MVC(这并不总是可能的)。

在visualstudio中,您可以设置dll以在构建时复制到本地,请参阅以下文章(请注意MVC dll的名称略有更改,但它为您提供了过程)http://haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

将相应的 dll 从 GAC 复制到 umbraco 站点的 bin 文件夹中。为此,请在资源管理器中打开“%windir%\Microsoft.NET\assembly\GAC_MSIL”,您将找到 GAC 中安装的所有 dll,并且可以将相应的版本复制到项目中。这类似于上述方法,但绕过了构建项目。

就文件而言,你可能需要的不仅仅是System.Web.Razor。dll,但这将适用于所有丢失的文件。

 类似资料: