• Kelly   2014/12/26 13:16:00
  • System.Web.WebPages.Razor.Configuration.HostSection cannot be cast to
  • 关键字: MVC MVC4
  •  一个从asp.net mvc 3升级到asp.net mvc 4的项目发生了如下错误: 

    [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=1.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_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'. Type B originates from 'System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\7c2060f6\6145b34e\assembly\dl3\9036b7c7\fc8023c0_73fecb01\System.Web.WebPages.Razor.DLL'.

    这是因为本地程序集和GAC的程序集冲突了, 是因为在Web Pages 1.0中他在web.config内新增了一个配置节点。Web Pages 1.0在Web.config中目前我已发现到新增了一个配置节点,路径在~/Views/web.config.而不是web.config.
    1. <configuration>   
    2.    <system.web.webPages.razor /> <!--注意他于常用的system.web同级—>  
    3.    <system.web />  
    4. ...   
    5. </configuration>   

    修改~/Views/web.config成如下:
    1. <?xml version="1.0"?>  
    2. <configuration>  
    3.   <configSections>  
    4.     <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">  
    5.       <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />  
    6.       <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />  
    7.     </sectionGroup>  
    8.   </configSections>  
    9.   
    10.   <system.web.webPages.razor>  
    11.     <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />  
    12.     <pages pageBaseType="System.Web.Mvc.WebViewPage">  
    13.       <namespaces>  
    14.         <add namespace="System.Web.Mvc" />  
    15.         <add namespace="System.Web.Mvc.Ajax" />  
    16.         <add namespace="System.Web.Mvc.Html" />  
    17.         <add namespace="System.Web.Optimization"/>  
    18.         <add namespace="System.Web.Routing" />  
    19.       </namespaces>  
    20.     </pages>  
    21.   </system.web.webPages.razor>  
    22.   
    23.   <appSettings>  
    24.     <add key="webpages:Enabled" value="false" />  
    25.   </appSettings>  
    26.   
    27.   <system.web>  
    28.     <httpHandlers>  
    29.       <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>  
    30.     </httpHandlers>  
    31.   
    32.     <!--  
    33.         Enabling request validation in view pages would cause validation to occur  
    34.         after the input has already been processed by the controller. By default  
    35.         MVC performs request validation before a controller processes the input.  
    36.         To change this behavior apply the ValidateInputAttribute to a  
    37.         controller or action.  
    38.     -->  
    39.     <pages  
    40.         validateRequest="false"  
    41.         pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  
    42.         pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"  
    43.         userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">  
    44.       <controls>  
    45.         <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />  
    46.       </controls>  
    47.     </pages>  
    48.   </system.web>  
    49.   
    50.   <system.webServer>  
    51.     <validation validateIntegratedModeConfiguration="false" />  
    52.   
    53.     <handlers>  
    54.       <remove name="BlockViewHandler"/>  
    55.       <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" />  
    56.     </handlers>  
    57.   </system.webServer>  
    58. </configuration>  
    59.    
    60. 接着修改~/web.config文件  
    61.   
    62. <system.web>   
    63.   <compilation debug="true" targetFramework="4.0">   
    64.     <assemblies>   
    65.       <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   
    66.       <add assembly="System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   
    67.       <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   
    68.       <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   
    69.       <add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />   
    70.     </assemblies>   
    71.   </compilation>   
    72.   <authentication mode="Forms"></authentication>   
    73.   <pages>   
    74.     <namespaces>   
    75.       <add namespace="System.Web.Helpers" />   
    76.       <add namespace="System.Web.Mvc" />   
    77.       <add namespace="System.Web.Mvc.Ajax" />   
    78.       <add namespace="System.Web.Mvc.Html" />   
    79.       <add namespace="System.Web.Routing" />   
    80.       <add namespace="System.Web.WebPages" />   
    81.     </namespaces>   
    82.   </pages>   
    83. </system.web>   

大家的回答
  • 还没有人回答这个问题哦,亲,快来帮帮TA吧
  •   我来回答
  • 注册用户登录后才能发表评论,请 登录注册
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款