周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在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运行成功后,再与大家分享。

转载于:https://www.cnblogs.com/wusir/p/3666478.html

CentOS上 Mono 3.2.8运行ASP.NET MVC4经验相关推荐

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

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

  2. Azure 上使用 Windows Server Core 运行 ASP.NET Core 网站

    点击上方蓝字关注"汪宇杰博客" 导语 微软智慧云 Azure 上虽然早就有 App Service 这种完全托管的 PaaS 服务可以让我们分分钟建网站.但是不自己配一下环境,就不 ...

  3. 突破常规限制运行asp木马(转)

    突破常规限制运行asp木马(转)[@more@] 脚本入侵中往往会上传一个asp木马来进一步扩大权限,或者在肉鸡中留一个asp后门也是一个不错的选择.但是如何让asp木马更加隐匿和强大,从而躲过网管查 ...

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

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

  5. Centos下安装Jexus、.net,上传部署运行asp.net项目

    第一次接触安装Jexus,原因是公司要在Linux系统上部署asp.net项目,所以从无到有,从慢慢学习怎么安装部署环境开始 官方网站推荐安装使用独立版,这样就不用单独安装mono.安装独立版的时候m ...

  6. 在CentOS上使用Jexus托管运行 ZKEACMS

    ZKEACMS Core 是基于 .net core 开发的,可以在 windows, linux, mac 上跨平台运行,接下来我们来看看如何在 CentOS 上使用Jexus托管运行 ZKEACM ...

  7. Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)

    1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...

  8. Linux(CentOS 6.5)下配置Mono和Jexus并且部署ASP.NET MVC5

    1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...

  9. Centos7笔记之Docker-ce上运行ASP.NET CORE程序

    一.目标 centos7.6下Docker-ce上运行ASP.NET CORE程序 二.平台 [root@hiibm ~]# uname -r 3.10.0-957.el7.x86_64 [root@ ...

最新文章

  1. node 修改html文件路径,好程序员前端教程-nodejs如何读取文件夹目录的内容
  2. 实习日记7.13-7.14
  3. ip6tables 无法基于端口过滤IPv6 分片报文问题解决
  4. python—多线程数据混乱问题解决之同步锁
  5. 使用vl_sift提取图像特征
  6. 入门深度学习,其实并不难!
  7. JavaScript高级之正则表达式
  8. 您的DST大礼包请查收
  9. 开源 非开源_在开源中吃我们自己的狗粮
  10. 金蝶如何修改服务器IP,金蝶服务器ip地址修改
  11. XP系统计算机桌面图标不见,xp系统桌面图标不显示的详细方法
  12. 开题报告:基于java医院在线预约挂号系统 毕业设计论文开题报告模板
  13. 测试-------性能测试(一)
  14. flink ui含义图解
  15. python画猪猪侠_猪猪侠简笔画怎么画
  16. 微信小程序在模板语法中使用indexOf失效问题解决办法
  17. 瑞幸咖啡贵不贵?咖啡不贵,商业却很贵
  18. 3GPP TS 23501-g51 中英文对照 | 5.3.1 General
  19. js控制form提交的action
  20. 【计算机毕业设计】二手车交易网站

热门文章

  1. “压倒性快感”是怎么来的?氪金抽卡,是利用认知BUG的最强发明
  2. 《原神》——开放世界二次元游戏的一些见解和建议
  3. ssh ip登录缓慢问题解决
  4. 剑与远征新海盗版本10章怎么去过?Boss也会随着章节、等级提升
  5. 11gR2 RAC GoldenGate的HA配置
  6. ffmpeg安装与配置
  7. VALSE2019总结(2)-以人为中心的视觉理解
  8. xlrd、xlwt操作execl表格
  9. HTML5自定义播放器(简式)
  10. QInputDialog Multiple Inputs 输入多个变量的对话框