Ubuntu 环境 运行Asp.net mvc +EntityFramework+ Mysql
关键词:ubuntu,mono,.Net framework 4.5,asp.net mvc 4,Entityframework 6,Mysql
Mono安装
参考文章:
Install Mono on Linux | Mono
http://www.mono-project.com/docs/getting-started/install/linux/
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
echo"deb http://download.mono-project.com/repo/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mono-xamarin.list
sudo apt-get install mono-complete
mono -V

mono运行时环境安装成功。
Jexus
Jexus V5.5.3 使用问答- Linux DotNET程序员大本营
http://www.linuxdot.net/bbsfile-3500
安装
sudo wget http://www.linuxdot.net/down/jexus-5.6.3.tar.gz
sudo tar -zxvf jexus-5.6.3.tar.gz
cd jexus-5.6.3
sudo ./install
启动服务
启动:sudo /usr/jexus/jws start
停止:sudo /usr/jexus/jws stop
重启:sudo /usr/jexus/jws restart
重启指定网站:sudo /usr/jexus/jws restart siteName
停止指定网站:sudo /usr/jexus/jws stop siteName
首先得建"网站配置文件",在/usr/jexus/siteconf中的每一个文件都是一个网站的配置文件,每一个配置文件就代表一个网站。
安装
jexus后,在/usr/jexus/site配置
ocnf中,就已经有一个默认的网站配置文件,文件名叫"default"。
你可以修改这个配置文件,也可以将这个配置文件复制并修改为一个新站。
配置文件中,有关键的三项是必填项:
port:端口号定义
root:虚拟根路径和物理根路径的定义
hosts:域名定义
端口号(port)是一个整数,一般是80,也可以是65535以下的其它整数,但这个端口号必须没有其它服务程序占用。
根路径(root)由两部分组成,中间用空格分开。空格前表示这个网站访问时的虚拟根路径(一般都是"/"),空格后是存放这个网站内容的文件夹的物理路径(比如"/var/www/default")。
域名(hosts),填写访问这个网站的域名,如果有多个域名,域名间就英文逗号分开,同时还可以用"泛域名",比如"*.mysite.com"。
网站名:jexus把网站配置文件的名称,作为网站名。
** 强调,网站配置文件名,不能有空格,第一个字符不能是"~"。
用 sudo /usr/jexus/jws restart,即可生效。
当然,更可以用 sudo /usr/jexus/jws restart siteName格式,指定需重启的网站。
测试
在/var/www/default文件件新建default.html.
在浏览器输入:
http://{server ip}/default.html
正常显示,就表示web服务器安装成功。
Mysql
安装
sudo apt-get install mysql-server mysql-client
启动服务
sudo start mysql
#手动的话这样启动
创建测试数据库
Create database demo
GO
CREATE TABLE `User` (
`UserId` int(11) NOT NULL AUTO_INCREMENT,
`UserName` varchar(20) DEFAULT NULL,
`Password` varchar(50) DEFAULT NULL,
`Email` varchar(20) DEFAULT NULL,
`Birthday` datetime DEFAULT NULL,
PRIMARY KEY (`UserId`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=latin1
GO
Asp.net mvc
环境
Vs.net 2013
Asp.net mvc 4(注意,其他版本没测试,貌似mvc4比较稳定,后期测试)
EntityFramework 6
Mysql 6
新建工程

如果使用vs.net 默认模板,建议选择asp.net mvc 4模板,也可以建空网站使用nuget 自己添加dll。
.Net framework 选择4.5.
发布测试默认站点
使用WinScp上传至默认站点。
注意:删除Microsoft.Web.Infrastructure.dll,System.Net.Http.Formatting.dll
重新打开:http://{serverip}/
能正常运行恭喜,你运气不错。
错误排查,一般mono出错,大部分问题处在dll上,mono没有实现或者有另外的实现,需要替换为mono的dll。
例如,以下问题:
System.InvalidProgramException
Invalid IL code in System.Net.Http.Headers.MediaTypeHeaderValue:.ctor (string): method body is empty.
Description: HTTP 500.Error processing request.
Details: Non-web exception. Exception origin (name of application or object): System.Net.Http.Formatting.
Exception stack trace:
Version Information: 3.2.3 ((no/8d3b4b7 Tue Sep 23
14:47:41 IST 2014); ASP.NET Version: 4.0.30319.17020
据错误提示就知System.Net.Http.Formatting.dll有问题。
- 检查bin目录是否缺少dll。
- Ubuntu中执行find / | grep System.Net.Http.Formatting.dll

在mono中已经有此实现,直接删除。
遇到问题就根据这种方式排查,可以解决绝大部分问题。
安装Mysql connect
http://cdn.mysql.com/Downloads/MySQLInstaller/mysql-installer-web-community-5.6.22.0.msi
Nuget 安装EntityFramework 6
Install-Package EntityFramework

在命令行中输入。
Nuget 安装Mysql Entity
Install-Package MySql.Data.Entity

安装完成后,引用里面会出现Mysql程序及,web.config会出现EntityFramework的Mysql驱动。

新建EntityFramework连接


EntityFramework自动生成Mysql连接。

完整web.config参考如下:
<?xml
version="1.0"?>
<!--
有关如何配置 ASP.NET 应用程序的详细信息,请访问
http://go.microsoft.com/fwlink/?LinkId=152368
-->
<configuration>
<configSections>
<section
name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false"/>
</configSections>
<connectionStrings>
<add
name="DataEntities"
connectionString="metadata=res://*/Models.DataModel.csdl|res://*/Models.DataModel.ssdl|res://*/Models.DataModel.msl;provider=MySql.Data.MySqlClient;provider connection string="server=192.168.10.X;user id=XX;password=XX;persistsecurityinfo=True;database=demo""
providerName="System.Data.EntityClient"/>
</connectionStrings>
<appSettings>
<add
key="webpages:Version"
value="2.0.0.0"/>
<add
key="webpages:Enabled"
value="false"/>
<add
key="PreserveLoginUrl"
value="true"/>
<add
key="ClientValidationEnabled"
value="true"/>
<add
key="UnobtrusiveJavaScriptEnabled"
value="true"/>
</appSettings>
<!--
有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
可在 <httpRuntime> 标记上设置以下特性。
<system.Web>
<httpRuntime targetFramework="4.5" />
</system.Web>
-->
<system.web>
<customErrors
mode="Off"/>
<httpRuntime
targetFramework="4.5" />
<compilation
debug="true"
targetFramework="4.5"/>
<!--<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="2880" />
</authentication>-->
<pages
controlRenderingCompatibilityVersion="4.0">
<namespaces>
<add
namespace="System.Web.Helpers"/>
<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"/>
<add
namespace="System.Web.WebPages"/>
</namespaces>
</pages>
<!--
If you are deploying to a cloud environment that has multiple web server instances,
you should change session state mode from "InProc" to "Custom". In addition,
change the connection string named "DefaultConnection" to connect to an instance
of SQL Server (including SQL Azure and SQL Compact) instead of to SQL Server Express.
-->
</system.web>
<system.webServer>
<validation
validateIntegratedModeConfiguration="false"/>
<modules
runAllManagedModulesForAllRequests="true"/>
<handlers>
<remove
name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/>
<remove
name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/>
<remove
name="ExtensionlessUrlHandler-Integrated-4.0"/>
<add
name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32"
responseBufferLimit="0"/>
<add
name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64"
responseBufferLimit="0"/>
<add
name="ExtensionlessUrlHandler-Integrated-4.0"
path="*."
verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>
<runtime>
<assemblyBinding
xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="System.Web.Helpers"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="1.0.0.0-2.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="System.Web.Mvc"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="1.0.0.0-4.0.0.0"newVersion="4.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="System.Web.WebPages"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="1.0.0.0-2.0.0.0"
newVersion="2.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="WebGrease"
publicKeyToken="31bf3856ad364e35"/>
<bindingRedirect
oldVersion="0.0.0.0-1.3.0.0"
newVersion="1.3.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="System.Net.Http"
publicKeyToken="b03f5f7f11d50a3a"
culture="neutral"/>
<bindingRedirect
oldVersion="0.0.0.0-4.0.0.0"
newVersion="4.0.0.0"/>
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity
name="EntityFramework"
publicKeyToken="b77a5c561934e089"
culture="neutral"/>
<bindingRedirect
oldVersion="0.0.0.0-6.0.0.0"
newVersion="6.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<system.data>
<DbProviderFactories>
<remove
invariant="MySql.Data.MySqlClient"/>
<add
name="MySQL Data Provider"
invariant="MySql.Data.MySqlClient"
description=".Net Framework Data Provider for MySQL"
type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</DbProviderFactories>
</system.data>
<entityFramework>
<defaultConnectionFactory
type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter
value="v11.0"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider
invariantName="System.Data.SqlClient"
type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
<provider
invariantName="MySql.Data.MySqlClient"
type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
</providers>
</entityFramework>
</configuration>
注意黄色背景的配置。
新建Mysql测试代码
直接在Index中对Mysql进行数据保存。
public ActionResult Index()
{
//todo test
UserServices.Save(new User()
{
UserName = "admin",
Password = Guid.NewGuid().ToString(),
Email = "ss@ss.com",
Birthday = DateTime.Now
});
return View();
}
public static void Save(User user)
{
using (var provider = new DataEntities())
{
provider.User.Add(user);
provider.SaveChanges();
}
}
使用Vs。net 发布
参考4.3章节排除问题。
运行成功。


FAQ
问题排除
find / | grep System.Net.Http.Formatting.dll
参考bin程序集清单


Ubuntu 环境 运行Asp.net mvc +EntityFramework+ Mysql的更多相关文章
- 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 ...
- Asp.Net MVC +EntityFramework主从表新增编辑操作的实现(删除操作怎么实现?)
Asp.Net MVC +EntityFramework主从表新增编辑操作的实现 对于MVC中同时对主从表的表单操作在网上现有的解决很少,而这样的操作在做业务系统中是经常为遇到的.我在网上搜索了很久都 ...
- asp.net mvc entityframework sql server 迁移至 mysql方法以及遇到的问题
背景: 我原来的项目是asp.net mvc5 + entityframework 6.4 for sql server(localdb,sql server),现在需要把数据库切换成mysql,理论 ...
- 在Ubuntu13.04中配置Jexus+Mono3.2运行Asp.Net Mvc 4站点 (一)
这篇文章打算分两部分来写,第一部分介绍在Ubuntu中安装和配置.Net Framework4.5环境,第二部分介绍如何部署Asp.Net Mvc 4站点并确保Mvc4的几个重要特性都能正常工作. 一 ...
- ASP.Net MVC连接MySQL和Code First的使用
首先要准备一下的工具作为环境 MySQL Community Server 5.7.x My Workbench 6.3 VS2017 新建一个项目,NetMySQLCodeFirst 选择MVC,再 ...
- 使用asp.net mvc + entityframework + sqlServer 搭建一个简单的code first项目
步骤: 1. 创建一个asp.net mvc 项目 1.1 项目创建好结构如下 2 通过vs安装EntityFramework框架 install-package entityframework 3. ...
- Linux 安装Mono环境 运行ASP.NET(一)
1.先看一下Linux环境下面请求的过程,(画的不是很好,简单的了解一下原理.) .NET跨平台其实需要这三个关键:编译器.CLR和基础类库.在.NET下我们编写一个最简单的"Hello W ...
- Linux 安装Mono环境 运行ASP.NET(二)
一.安装libgdiplus 前面我们已经安装了apr.apr_util.pcre和httpd apache .现在我们来安装libgdiplus Libgdiplus是一个Mono库,用于对 ...
- ubuntu中下运行asp.net程序
首先在ubuntu下面是不能直接运行VISUAL STUTIO的,必须借助mono开发工具和xsp4.0.那我们就来看一下在ubuntu的电脑中怎么安装这两个工具. 首先安装mono,打开终端,输入a ...
随机推荐
- 性能调优:理解Set Statistics Time输出
在性能调优:理解Set Statistics IO输出我们讨论了Set Statistics IO,还有如何帮助我们进行性能调优.这篇文章会讨论下Set Statistics Time,它会告诉我们执 ...
- UWP开发入门(十一)——Attached Property的简单应用
UWP中的Attached Property即附加属性,在实际开发中是很常见的,比如Grid.Row: <Grid Background="{ThemeResource Applica ...
- 【Spark】---- 在Linux集群上安装和配置Spark
1 安装JDK 1) 进入JDK官网 2) 下载JDK安装包 3)配置环境变量,在/etc/profile增加以下代码 JAVA_HOME=/home/hadoop/jdk1.6.0_38 PAT ...
- 点餐APP 冲刺一总结
在冲刺一的过程中,我们小组每个人的任务相对来说都比较轻松,完成的进度也比较快, 主要的原因是每个人分配的任务都比较明确,大家也很积极地去完成.当然啦,我们在实现 项目的过程中也遇到了一些麻烦,主要是最 ...
- myeclipse怎么github
myeclipse怎么github 第一步.打开myeclipse->选择项目->鼠标右键->Team->Share project,将出现如下图所示: 第二步.选择git,在 ...
- MVC,布局页面
一>>> 在_ViewStart.cshtml文件中,加入: @{ Layout = "~/Views/Shared/_Layout.cshtml"; PageD ...
- 【C#】第1章 VS2015中C#6的新特性
分类:C#.VS2015 创建日期:2016-06-12 一.简介 VS2015内置的C#版本为6.0,该版本提供了一些新的语法糖,这里仅列出个人感觉比较有用的几个新功能. 二.几个很有用的新特性 注 ...
- 【Android】将Xamarin For VS升级为4.1.0.530版
分类:C#.Android.VS2015(自带Update2).Win10 创建日期:2016-06-10 2016-08-03说明:该版本已过时,新版本详见本博客置顶的更新. 一.Xamarin f ...
- 解决IIS Web部署 svg/woff/woff2字体 404错误
最近在IIS上部署web项目的时候,发现浏览器总是报找不到woff.woff2字体的错误.导致浏览器加载字体报404错误,白白消耗了几百毫秒的加载时间. 一开始以为是路径的问题,检查发现路径也没错. ...
- [moka同学笔记]百度编辑器Ueditor自动换行,添加<p>的问题(摘录)
原文:http://www.cnblogs.com/kissdodog/p/5419919.html 百度编辑器Ueditor其实蛮好用的,后来使用了一段时间发现,每次打开后又保存,发现都会往内容的 ...