周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4。在此总结经验如下:

系统平台的版本:

CentOS 6.5 Mono 3.2.8 Jexus 5.5.1

VS2012 英文Ultimate版 由于采用的是英文版本,因此下面图片也都是英文版的界面。

完成工作:制作一个完整的MVC4 Internet应用(本例不含数据库,数据库的访问在以后的文章中谈),将其部署在Linux + Mono + Jexus环境。

步骤:

1、使用 .NET Framework 4生成MVC4;

2、卸载EF;同时删除或注释与EF相关的应用;

3、发布;

按上述步骤的详细操作如下:

1、使用 .NET Framework 4生成MVC4

在生成MVC4时,目前情况下,一定要使用 .NET Framework 4,不要使用 .NET Framework 4.5,否则,由于 .NET Framework 4.5虽然很好很强大,但由于它太新,在Mono上运行至今我未找到有效的完整运行办法,包括Windows Server 2008,如果不安装最新的Service Pack,都无法支持 .NET Framework 4.5。

因此,如下图,在创建新项目时,请注意保证使用 .NET Framework 4(见图片上部中间),

我创建是一个完整的Internet应用,如下图:

2、卸载EF;同时删除或注释与EF相关的应用

小蝶惊鸿的文章Linux.Net学习手记(5),知道需要卸载EF。到“工具”菜单找到NuGet操作命令窗口或者管理器界面,将EntityFramework卸载。

注意虽然EF卸载可以把Dll引用及根目录下的Web.config文件进行修改,但对于MVC4的Internet应用来说,里面有一些需要使用EF的代码却不会自动卸载,需要手动删除或者注释。因为自己既然想使用ASP.NET MVC4运行在Linux上,就不打算使用MS SQL Server数据库,而是使用MySQL数据库,访问MySQL方式采取ADO.NET。所以,EF相关代码可以全部屏蔽。

首先,把Models目录下的AccountModels文件删除;然后,将Controllers目录下的AccountController删除;

生成解决方案(Ctrl + Shift + B),下面会有一些错误提示(我的有7、8个左右),按照错误提示,把错误提示的代码注释即可,这些代码与创建用户有关,使用了EF;直到生成的解决方案没有错误,在VS下运行,确保通过;

3、发布

周折最多的地方就是发布了。最初,发布到本地文件系统,其设置是这样的:

注意“设置”中选择了两个选项:“发布前删除所有现有文件”和“在发布期间预编译”,结果这样的发布,到Linux上后,出现了奇怪的结果:如果Controller中的Action返回的是字符串,即return "Hello, MVC4";,这样的路由没有问题;但如果返回的是ActionResult,即return View();就会出现错误信息!

小蝶惊鸿参与这个问题的解决,发现如果把第二项“在发布期间预编译”选掉(如下图),生成的发布文件放到Linux后,上述问题就解决了!

至此,一个完整的MVC4应用就可以运行在Linux之上了。

特别需要说明的是:本文经验只适用于Mono 3.2.8,其它版本的Mono可以参考,但无法保证适用性,因为版本差异貌似很大。

本文所述过程详细参考了Linux.Net学习手记(5),在实际操作过程中,发现在自己的这个操作中,即使不在Web.config中加入<globalization culture="zh-CN" uiCulture="en-US"/>,同时也不对Microsoft.Web.Infrastructure.dll进行删除,MVC4运行也是正常的。估计这就是版本不同造成的差别吧。

感谢小蝶惊鸿张善友Jexus服务器作者宇内流云,他们的文章对我将.NET应用到Linux上帮助很大。

实际网站在Linux运行成功后,再与大家分享。

CentOS上 Mono 3.2.8运行ASP.NET MVC4经验的更多相关文章

  1. 安装mono和jexus,运行asp.net程序

    随笔- 62  文章- 1  评论- 7  raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序   参考网址: http://www.linuxdot.net/ htt ...

  2. 在CentOS上部署基于dnx/coreclr的ASP.NET 5应用程序

    在Ubuntu上写好了一个简单的ASP.NET 5应用程序,尝试将这个程序部署在没有mono环境的CentOS服务器上. 部署步骤如下: 1)安装libuv(KestrelHttpServer需要它) ...

  3. .NET跨平台之旅:在Linux上以本地机器码(native)运行ASP.NET Core站点

    在将“.NET跨平台之旅”示例站点 about.cnblogs.com 从 ASP.NET 5 RC1 升级至 ASP.NET Core 1.0 (博文链接)之后,我们有一个难以抗拒的冲动 —— 体验 ...

  4. 在Linux上以服务的方式运行ASP.NET Core站点

    更新:用supervisor是更好的解决方法,详见 Linux下为 dotnet 创建守护进程 要在生成环境下在Linux服务器上跑ASP.NET Core站点,首先要解决的问题是以服务的方式运行AS ...

  5. raspberrypi(树莓派)上安装mono和jexus,运行asp.net程序

    参考网址: http://www.linuxdot.net/ http://www.cnblogs.com/mayswind/p/3279380.html http://www.raspberrypi ...

  6. asp.net mvc4 过滤器的简单应用:登录验证

    直接上代码,不要说话. ASP.NET MVC4过滤器的简单应用:验证登录 [AcceptVerbs(HttpVerbs.Post)] public ActionResult login(FormCo ...

  7. .NET跨平台:在CentOS上编译dnx并运行ASP.NET 5示例程序

    在之前的博文中我们在 Ubuntu 上成功编译出了 dnx ,并且用它成功运行了 ASP.NET 5 示例程序.在这篇博文中我们将 Ubuntu 换成 CentOS. 目前 dnx 的编译需要用到 m ...

  8. centos下linux运行asp网站搭建配置-mono+nginx

    一.首先安装一些需要的软件包 1.  首先更新CentOS上的软件包:yum –y update. 2.  安装一些需要的库: yum -y install gcc gcc-c++ bison pkg ...

  9. Mono 4.0 Mac上运行asp.net mvc 5.2.3

    Mono 4.0 已经发布,二进制包已经准备好,具体的发布说明参见:http://www.mono-project.com/docs/about-mono/releases/4.0.0/. 今天在Ma ...

随机推荐

  1. 读书笔记:《HTML5开发手册》--HTML5新的结构元素

    读书笔记:<HTML5开发手册> (HTML5 Developer's CookBook) 虽然从事前端开发已有很长一段时间,对HTML5标签也有使用,但在语义化上面理解还不够清晰.之前在 ...

  2. Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系

    祝各位2017年事业辉煌!开年第一篇博客,继续探索Xamarin.Forms… 为什么我做Xamarin开发的时候中意于Prism.Forms框架?本章为你揭晓. 实例代码地址:https://git ...

  3. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  4. 12、Struts2表单重复提交

    什么是表单重复提交 表单的重复提交: 若刷新表单页面, 再提交表单不算重复提交. 在不刷新表单页面的前提下: 多次点击提交按钮 已经提交成功, 按 "回退" 之后, 再点击 &qu ...

  5. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  6. OpenGL超级宝典笔记----渲染管线

    在OpenGL中任何事物都在3D空间中,但是屏幕和窗口是一个2D像素阵列,所以OpenGL的大部分工作都是关于如何把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的 ...

  7. Div Vertical Menu ver5

    这个小功能,如果是算此次,已经是第5次修改了.可以从这里看到前4次:V1, http://www.cnblogs.com/insus/archive/2011/10/17/2215637.html V ...

  8. enote笔记法使用范例(2)——指针(1)智能指针

    要知道什么是智能指针,首先了解什么称为 “资源分配即初始化” what RAII:RAII—Resource Acquisition Is Initialization,即“资源分配即初始化” 在&l ...

  9. css中line-height行高的深入学习

    之前对css中行高line-height的理解还是有些肤浅,深入后才发觉里面包罗万象.学习行高line-height,首先从基本原理开始 (标注该文章转载 http://www.cnblogs.com ...

  10. (转) 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    原文地址: http://www.cnblogs.com/lyhabc/p/4682986.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第三篇,这一篇才真正开始搭建Alwa ...