">" %>

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>