MVC 程序在编译时提示 GAC与 Temporary ASP.NET Files目录内引用文件版本不一致

今天在调试Mvc程序时,提示GAC与Temporary ASP.NET Files目录内引用文件版本不一致。

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to
[B]System.Web.WebPages.Razor.Configuration.HostSection.
Type A originates from 'System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location 'C:\windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.
Type B originates from 'System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' in the context 'Default' at location
'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\vs\c6247a09\b563b17c\assembly\dl3\6828be27\18b62d01_f301d301\System.Web.WebPages.Razor.dll'

产生原因:Views目录下的Web.config的<configSections>节点内配置的版本与 IIS站点主目录内Web.Config内配置的节点版本不一致。

Views目录内Web.config的DLL默认引用位置是GAC目录内文件;IIS站点主目录引用的是Temporary ASP.NET Files目录内的文件。

解决办法一:

1、打开IIS站点主目录内Web.Config文件,转到<runtime>节点

2、将出错的的版本做重定向处理,例:

<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
</dependentAssembly>

解决办法二:

将Views目录内Web.config文件<configSections>节点的版本号修改为与IIS站点主目录内Web.Config内文件版本一致。

注意事项:上述两种方法修改后,一定要再将Temporary ASP.NET Files目录内的临时文件清除。

上一篇:sqlserver 2008 局域网跨服务器T-SQL操作(二)


下一篇:JQuery 实现标题与内容相呼应样式