gpt4 book ai didi

asp.net - 将 MVC-3 升级到 MVC-4

转载 作者:行者123 更新时间:2023-12-02 05:18:25 26 4
gpt4 key购买 nike

在发布之前,我确实阅读了 hereSO question -

我采用了一些不同的方法,这似乎更容易。

由于 MVC-3 应用程序包含非常少的 Controller 和 View 。我创建了一个新的 MVC-4 - Basic application 并复制了以下文件 -

  1. 控制者
  2. 浏览量
  3. 布局文件
  4. 从旧的 Global.asax.cs 到 App_Start/Route.Config 的路由信息​​

我看到这种方法的优势是

  1. 无需手动引用新的 Dll。
  2. 无需更新 Web.config 引用。

构建正常,但是在运行应用程序时出现以下错误。

[A]System.Web.WebPages.Razor.Configuration.HostSection cannot be castto [B]System.Web.WebPages.Razor.Configuration.HostSection.

Type Aoriginates 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=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'.

显然在某处引用了 MVC3 dll。但不确定在哪里?对此的任何建议都会有所帮助。谢谢!

最佳答案

如果非要我猜的话,我会说你的 ~/Views/web.config 被覆盖并且仍然指向旧的 razor 解析器(以及随后的旧配置部分)。尝试用以下内容替换该文件:

<?xml version="1.0"?>

<configuration>
<configSections>
<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">
<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" />
<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" />
</sectionGroup>
</configSections>

<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>

<appSettings>
<add key="webpages:Enabled" value="false" />
</appSettings>

<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=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.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>

关于asp.net - 将 MVC-3 升级到 MVC-4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com