今天在调试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目录内的临时文件清除。