Asp.net Mvc 未能加载类型“System.Web.Mvc.ViewPage 的解決方法

2010-11-30 17:31:51|  分类: .net mvc |举报 |字号 

 

如果多个项目同时存在Areas中 每个子项目的views里都要有个Web.Config文件配置如下

分析器错误

说明: 在分析向此请求提供服务所需资源时出错。请检查下列特定分析错误详细信息并适当地修改源文件。

分析器错误消息: 未能加载类型“System.Web.Mvc.ViewPage<dynamic>”。

源错误:

行 1:  <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %> 行 2:
行 3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

源文件: /basisplatform/views/home/login.aspx    行: 1


版本信息: Microsoft .NET Framework 版本:4.0.30319; ASP.NET 版本:4.0.30319.1

解决办法是在web.config 的节点pages 中加入一段
validateRequest="false"
        
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,
System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"
        
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35"
        
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"

例如:

XML/HTML 代码
  • <pages
  • validateRequest="false"
  • pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
  • PublicKeyToken=31BF3856AD364E35"
  • pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
  • userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
  • PublicKeyToken=31BF3856AD364E35"
  • >
  • <namespaces>
  • <add namespace="System.Web.Mvc" />
  • <add namespace="System.Web.Mvc.Ajax" />
  • <add namespace="System.Web.Mvc.Html" />
  • <add namespace="System.Web.Routing" />
  • </namespaces>
  • </pages>
 
 
***********************************************目前用的
 
<?xml version="1.0"?>
 
<configuration>
    <system.web>
        <httpHandlers>
            <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
        </httpHandlers>
 
        <!--
        Enabling request validation in view pages would cause validation to occur
        after the input has already been processed by the controller. By default
        MVC performs request validation before a controller processes the input.
        To change this behavior apply the ValidateInputAttribute to a
        controller or action.
    -->
 
        <pages
            validateRequest="false"
  
         pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter,
System.Web.Mvc, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=31BF3856AD364E35"
          
 pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35"
          
 userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc,
Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
            <controls>
  
             <add assembly="System.Web.Mvc, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=31BF3856AD364E35"
namespace="System.Web.Mvc" tagPrefix="mvc" />
            </controls>
        </pages>
 
 
    </system.web>
 
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
 
        <handlers>
            <remove name="BlockViewHandler"/>
  
         <add name="BlockViewHandler" path="*" verb="*"
preCondition="integratedMode" type="System.Web.HttpNotFoundHandler"
/>
        </handlers>
    </system.webServer>
 
</configuration>
 
05-07 11:37