请有人帮我解决这个问题。
作为IIS6上的父级的Umbraco应用程序具有以下版本的System.Web.WebPages.Razor。
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
<system.web.webPages.razor>
<host factoryType="System.Web.WebPages.Razor.WebRazorHostFactory, System.Web.WebPages.Razor" />
<pages pageBaseType="System.Web.WebPages.WebPage">
<namespaces>
<add namespace="Microsoft.Web.Helpers" />
<add namespace="umbraco" />
<add namespace="Examine" />
</namespaces>
</pages>
作为IIS6上Umbraco应用程序下的虚拟目录的Blog Engine应用程序具有以下版本的System.Web.WebPages.Razor。
<configSections>
<remove name="system.web.webPages.razor" />
</configSections>
<assemblies>
<add assembly="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
即使在我添加dependentAssembly之后仍然没有任何对我有用,我在这个问题上浪费了一个多星期,请帮忙。
答案 0 :(得分:5)
您是否检查过当前部署到bin文件夹的System.Web.WebPages.Razor
的实际版本?我最近在一个多项目解决方案中遇到了类似的问题,其中一个项目是通过Nuget使用旧版本的程序集,这恰好是最终出现在bin文件夹中导致类似错误的版本。事实上,我很确定这是Umbraco Nuget软件包在旧组件中的复制。
答案 1 :(得分:4)
最后,我已经解决了这个问题。 Blog Engine的(子应用程序)Razor Script版本是2.0.0.0和Umbraco(父应用程序)4.1.6应用程序的Razor脚本版本是1.0.0.0,我在子网站上添加了以下内容.config
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31BF3856AD364E35" culture="neutral" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
一旦上面添加,我摆脱了这个错误,我面对下面的相同依赖性错误,我添加了相应的依赖程序集和版本。
Microsoft.Web.Helpers.dll
Examine.dll
Umbraco.dll
WebGrease.dll
对于上述三个依赖项将不会出现在子应用程序的bin文件夹中,您需要从父bin文件夹中复制dll文件并将其添加到子bin文件夹中,这将对所有依赖项问题进行排序。
对于BlogEngine上作为虚拟目录和Umbraco作为父应用程序的任何部署问题,请留言以帮助您解决任何不同版本的问题。
答案 2 :(得分:3)
@ProNotion是对的,我看到越来越多的Umbraco软件包依赖于特定版本的程序集导致程序集冲突,特别是如果两个软件包需要同一程序集的不同版本。
所以其他一些提示:
MS的这个工具有助于诊断程序集绑定问题(http://msdn.microsoft.com/en-us/library/e74a18c4%28v=vs.71%29.aspx)。
在web.config中添加运行时/ assemblyBinding部分可以解决碰撞程序集的问题(http://msdn.microsoft.com/en-us/library/0ash1ksb(v=vs.110).aspx)
有时程序集不会被复制(例如,你使用msbuild并且程序集不包含在项目中) - 所以你还应该检查程序集是否将它发送到实时服务器。
答案 3 :(得分:2)
请尝试以下步骤。
2.在Webconfig中
a。首先添加程序集
<assemblies>
<add assembly="System.Web.WebPages, Version=X.X.X.X, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
</assemblies>
b。将程序集绑定到运行时
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-X.X.X.X" newVersion="X.X.X.X"/>
</dependentAssembly>
</assemblyBinding>
3.确保添加了正确的密钥
<appSettings>
<add key="webpages:Version" value="X.X.X.X"/>
</appSettings>
这对我有用。希望它也会帮助你。
答案 4 :(得分:0)
有时,你会在
之间出错System.Web.WebPages.Razor
and
System.Web.Razor
试试看并检查
答案 5 :(得分:0)
创建一个新区域,右键单击项目,添加,区域
将web.config从此区域的views文件夹复制到/views/web.config
删除区域