我正在尝试针对 RazorEngine 无法在 Razor 2.0 应用程序中部署的问题实施此解决方法,因为它依赖于不兼容的 Razor 1.0。
我所做的是在 bin 文件夹中创建了两个目录:1.0 和 2.0,并将各自的 System.Web.Razor.dll 文件放入每个目录中。然后,我向 web.config 添加了dependentAssembly/codeBase 提示,以将程序集加载器指向正确的方向。
但是,我似乎无法让 Asp.net 尊重我为 System.Web.Razor 程序集申请的 codeBase 覆盖。结果是无法加载 System.Web.Razor 1.0.0.0 以供 RazorEngine 使用。
网页配置
<configuration>
<runtime xmlns="">
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<codeBase version="1.0.0.0" href="file://c:\apps\lr2\web\arcs\bin\1.0\System.Web.Razor.dll" />
<codeBase version="2.0.0.0" href="file://c:\apps\lr2\web\arcs\bin\2.0\System.Web.Razor.dll" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
System.Web.Razor 1.0.0.0 的 Fusion 程序集加载日志的输出:
日志:用户 = NT AUTHORITY\SYSTEM 日志:DisplayName = System.Web.Razor,版本 = 1.0.0.0,文化 = 中性,PublicKeyToken = 31bf3856ad364e35(完全指定)
日志:Appbase = file:///C:/apps/lr2/web/arcs/
日志:初始 PrivatePath = C:\apps\lr2\web\arcs\bin
日志:动态基础 = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\a63cc915
日志:缓存基础 = C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\a63cc915
日志:AppName = 98966cc9
调用程序集:RazorEngine,版本=3.0.8.0,文化=中性,PublicKeyToken=9ee697374c7e744a。
LOG:此绑定在默认加载上下文中开始。
LOG:使用应用程序配置文件:C:\apps\lr2\web\arcs\web.config
LOG:使用主机配置文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet.config
LOG:使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config 中的机器配置文件。
日志:政策后参考:System.Web.Razor,版本=1.0.0.0,文化=中性,PublicKeyToken=31bf3856ad364e35
日志:GAC 查找不成功。
日志:正在尝试下载新的 URL 文件:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor.DLL。
日志:尝试下载新 URL 文件:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor .DLL。
日志:正在尝试下载新的 URL 文件:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.DLL。日志:正在尝试下载新的 URL 文件:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.DLL。
日志:正在尝试下载新的 URL 文件:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor.EXE。
日志:尝试下载新 URL 文件:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/a63cc915/98966cc9/System.Web.Razor/System.Web.Razor 。EXE文件。
日志:正在尝试下载新的 URL 文件:///C:/apps/lr2/web/arcs/bin/System.Web.Razor.EXE。
日志:正在尝试下载新的 URL 文件:///C:/apps/lr2/web/arcs/bin/System.Web.Razor/System.Web.Razor.EXE。
LOG:所有探测 URL 都已尝试并失败。
知道为什么 Asp.net 从不尝试深入 bin\1.0 吗?
我确实检查了 machine.config 并且没有任何冲突的 assemblyBinding 的迹象。
感谢帮助!