各位读者大家好,好长一段时间没有更新文章了,自从参加工作之后,每天等待去做的工作没完没了,个人的时间也变得奢侈起来,今后要尽量从中脱身,抽更多的时间来完成自己想做的事情(希望如此)。
言归正传,上一回合中,我们讨论学习了如何在Linux.NET中让一个 MVC 3.0 和 MVC 4.0 的项目在mono中跑起来。而就在早前几天,我在新浪微博中看到一位朋友转发了一篇有关如何将MVC4.0项目升级到MVC5.0的文章:《How to Upgrade an ASP.NET MVC 4 and Web API Project to ASP.NET MVC 5 and Web API 2》。我不禁感叹,这时代的步伐还真快,MVC还真的一年一版本的出,同时,一个想法在脑海中形成:既然MVC都发展到5.0了,那当前能否让它在Mono中跑起来呢?
进入本回合主题,本回合中我们将讨论学习:
1、得到一个ASP.NET MVC 5 的框架应用
2、将一个简单的ASP.NET MVC 5 的应用部署到Linux中
本回合的程序源码包,可以点击“这里”进行下载。
1、得到一个ASP.NET MVC 5 的框架应用
巧妇难为无米之炊,想要部署一个MVC 5的应用,必须先得到一个基于这个版本的MVC应用。当前我使用的开发工具是Visual Studio 2012,而ASP.NET MVC 5.0 却是跟 Visual Studio 2013 绑定一同发布,官方貌似还没有提供独立的模板安装文件。当然,我们也不可能为了做这么一个ASP.NET MVC 5.0的实验而跑去下载并安装一个Visual Studio 2013,因此我们要通过一些其他办法来获得这么一个应用。
NuGet,果然是一枚好东西,我们很容易的就在上面的发现了ASP.NET MVC 5.0 的包,这样,我们可以先使用Visual Studio建立一个MVC 4.0(或以下)的项目,然后在通过NuGet为该项目升级即可。
首先,我们先建一个ASP.NET MVC 4.0 的项目:
然后调出我们的控制台程序(具体可以在:“工具->库程序包管理器->程序包管理器控制台”调出),输入:“Update-Package”,让它自动的把所有当前的版本库升级。
第三步,我们需要对“~/View/Web.config”中的配置进行修改。
具体的修改内容,可以参照前言中说提及的那篇文章,“Update the web.config files under the Views folder”这一节中的1、2两个步骤,在这里,我把我修改后的Web.Config配置全部贴出来让各位读者参考。
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.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=5.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.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> <!-- 在视图页面中启用请求验证将导致验证在 控制器已对输入进行处理后发生。默认情况下, MVC 在控制器处理输入前执行请求验证。 若要更改此行为,请对控制器或操作 应用 ValidateInputAttribute。 --> <pages validateRequest="false" pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> <controls> <add assembly="System.Web.Mvc, Version=5.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>