首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MVC-3升级到MVC-4

将MVC-3升级到MVC-4
EN

Stack Overflow用户
提问于 2013-01-10 18:13:24
回答 1查看 1.7K关注 0票数 2

在发这篇文章之前,我读过这里所以问题 -

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

因为MVC-3应用程序包含的控制器和视图非常少。我创建了一个新的MVC-4 -基本应用程序并复制了以下文件-

  1. 控制器
  2. 视图
  3. 布局文件
  4. 从旧Global.asax.cs到App_Start/Route.Config的路由信息

我认为这种方法的优点是

  1. 不需要手动引用新的Dlls。
  2. 不需要更新Web.config引用。

但是,在运行应用程序时,我会出现以下错误。

不能将ASystem.Web.WebPages.Razor.Configuration.HostSection转换为BSystem.Web.WebPages.Razor.Configuration.HostSection. 类型A来源于位于location 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_1.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.的上下文中的“System.Web.WebPages.Razor、Version=1.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35” B类型源自位于location 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\System.Web.WebPages.Razor\v4.0_2.0.0.0__31bf3856ad364e35\System.Web.WebPages.Razor.dll'.的上下文中的“System.Web.WebPages.Razor、Version=2.0.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35”

很明显,在某个地方,MVC3 dll正在被引用。但不确定在哪里?任何关于这方面的建议都是有帮助的。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 18:19:17

如果我不得不猜测,我会说您的~/Views/web.config被覆盖了,并且仍然指向旧的剃须刀解析器(以及随后的旧配置部分)。尝试用以下方法替换该文件:

代码语言:javascript
复制
<?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>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14264537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档