我在我的网站(网络应用程序)中使用了Umbraco 4.11.6。我的网站在localhost中工作(从Visual Studio 2012和IIS(v7)测试)但是当我从互联网空间运行它时出现错误。 错误是:
程序集加载跟踪:以下信息有助于确定无法加载程序集“System.Web.Razor”的原因。
警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会导致一些性能损失。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。
堆栈追踪:
[FileLoadException:无法加载文件或程序集'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 fileName,String codeBase,Evidence assemblySecurity,RuntimeAssembly locationHint,StackCrawlMark& stackMark,IntPtr pPrivHostBinder, Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)+0
System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(的AssemblyName assemblyRef,Evidence assemblySecurity,RuntimeAssembly reqAssembly, StackCrawlMark&安培; stackMark,IntPtr pPrivHostBinder,Boolean throwOnFileNotFound,Boolean forIntrospection,Boolean suppressSecurityChecks)+210
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, 证据集合安全,StackCrawlMark& stackMark,IntPtr pPrivHostBinder,Boolean forIntrospection)+242
System.Reflection.RuntimeAssembly.InternalLoad(String assemblyString, 证据集合安全,StackCrawlMark& stackMark,布尔 forIntrospection)+17 System.Reflection.Assembly.Load(String assemblyString)+35
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 assemblyName,Boolean starDirective)+122[ConfigurationErrorsException:无法加载文件或程序集 'System.Web.Razor,Version = 2.0.0.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该 找到程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)]
System.Web.Configuration.CompilationSection.LoadAssemblyHelper(字符串 assemblyName,布尔starDirective)+12761078
System.Web.Configuration.CompilationSection.LoadAllAssembliesFromAppDomainBinDirectory() +503 System.Web.Configuration.AssemblyInfo.get_AssemblyInternal()+ 142 System.Web.Compilation.BuildManager.GetReferencedAssemblies(CompilationSection compConfig)+334
System.Web.Compilation.BuildManager.CallPreStartInitMethods(字符串 preStartInitListPath)+203
System.Web.Compilation.BuildManager.ExecutePreAppStart()+152
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager,IApplicationHost appHost,IConfigMapPathFactory configMapPathFactory,HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel,Exception appDomainCreationException)+1151[HttpException(0x80004005):无法加载文件或程序集 'System.Web.Razor,Version = 2.0.0.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35'或其依赖项之一。该 找到程序集的清单定义与程序集不匹配 参考。 (HRESULT异常:0x80131040)]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+12881540 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest) wr,HttpContext context)+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>
答案 0 :(得分:18)
有很多方法可以解决这个问题:
在Web服务器上安装MVC(并非总是可行)。
在visual studio中,您可以将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,但这适用于所有丢失的文件。
答案 1 :(得分:8)
重新安装包Microsoft.AspNet.Razor,例如ADreNaLiNe-DJ posted。执行此操作的最佳方法是使用@NgModule({
imports: [ BrowserModule ],
declarations: [ LoginComponent , DialogOverviewExampleDialog],
entryComponents: [ DialogOverviewExampleDialog],
bootstrap: [ App ]
})
命令,因为Update-Package
命令未提供强制重新安装的选项,请参阅docs。
Install-Package
答案 2 :(得分:4)
这些解决方案中没有一个帮助我:因为我不能在服务器上安装任何东西,因为我不想在不使用Nuget的情况下直接包含dll。
我使用的解决方案是安装/重新安装名为 Microsoft.AspNet.Razor (Microsoft ASP.Net Razor 2.0.20710)
的nuget包答案 3 :(得分:3)
完成
答案 4 :(得分:1)
我不想安装visual studio和开发环境,所以我在Windows server 2016机器上安装了AspNetMVC4Setup.exe,它解决了这个问题。安装程序是从Microsoft网站下载的。
答案 5 :(得分:0)
答案this link对我有用:
打开程序包管理器控制台
工具> NuGet软件包管理器>软件包管理器控制台
将包源更改为Microsoft和.Net。
将项目更改为要调试的项目。
运行以下命令。
更新包Microsoft.AspNet.Mvc-重新安装