Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码
Linux 部署ASP.NET SQLite 应用 的坎坷之旅。文章底部 附示例代码。
有一台闲置的Linux VPS,尝试着部署一下.NET 程序,结果就踏上了坑之路,不过最后算是完美解决问题,遂记录如下。
环境:Linux系统为centos 6 mono 版本 mono-3.2.1 jexus版本 jexus-5.6.4
一.安装环境
1.安装mono
首先安装系统环境:
yum -y install gcc gcc-c++ bison pkgconfig glib2-devel gettext make libpng-devel libjpeg-devel libtiff-devel libexif-devel giflib-devel libX11-devel freetype-devel fontconfig-devel cairo-devel
下载mono 安装:
wget http://download.mono-project.com/sources/mono/mono-3.2.1.tar.bz2 tar -jxvf mono-3.2..tar.bz2 cd mono-3.2. ./configure –prefix=/usr make 此时出现以下错误 ../src/.libs/libeglib.a(libeglib_la-gunicode.o): In function `monoeg_g_get_charset’:
/root/mono-3.2./eglib/src/gunicode.c:: undefined reference to `locale_charset’
collect2: ld returned exit status
make[]: *** [test-eglib] Error
make[]: Leaving directory `/root/mono-3.2./eglib/test’
make[]: *** [all-recursive] Error
make[]: Leaving directory `/root/mono-3.2./eglib’
make[]: *** [all] Error
make[]: Leaving directory `/root/mono-3.2./eglib’
make[]: *** [all-recursive] Error
make[]: Leaving directory `/root/mono-3.2.′
make: *** [all] Error 修改 eglib/config.h vi eglib/config.h 将#define HAVE_LOCALCHARSET_H 1 替换为 #define HAVE_LOCALCHARSET_H 0 make make install mono –V 这一步显示信息代表安装成功
2.安装jexus
cd /tmp
wget linuxdot.net/down/jexus-5.6..tar.gz
tar -zxvf jexus-5.6..tar.gz
cd jexus-5.6.
sudo ./install
jexus 相关配置说明:http://www.linuxdot.net/bbsfile-3084
二.代码部分
有两种方式可以在Linux上使asp.net 操作sqlite。
由于Linux自带sqlite 环境,所以无需安装环境。而Windows没有需要安装sqlite,或者下载sqlite3.dll。
本文示例采用WebForm 开发。
1.使用Mono自带的 Mono.Data.Sqlite
使用方法和Ado.Net 相同。这里就不做过多讲解。
主要在链接字符串部分 "Version=3;Data Source={文件路径}"
2.使用NuGet中的sqlite-net (最终采用的方法,比较完美)
Install-Package sqlite-net
github: https://github.com/praeclarum/sqlite-net
wiki: https://github.com/praeclarum/sqlite-net/wiki
安装好后就可以开发。wiki 里面讲解了一些详细的用法。
我只是实现一些简单的增删查改操作。
使用方法:
[PrimaryKey, AutoIncrement] //主键加自增
public int ID { get; set; }
更多方法参见wiki
基本的一些代码
public partial class Demo : System.Web.UI.Page
{
private SQLiteConnection con = null;
protected void Page_Load(object sender, EventArgs e)
{
var path = Server.MapPath("~/App_Data/Demo.db");
con = new SQLiteConnection(path);
//con.CreateTable<User>();//创建表 只需执行一次 if (!string.IsNullOrEmpty(Request["id"]))
{
con.Delete<User>(Request["id"]);
Response.Redirect("Demo.aspx");
} var cmd = con.CreateCommand("select * from User");
var list = cmd.ExecuteQuery<User>();
foreach (var item in list)
{
Response.Write(string.Format("{0}-{1}-{2} <a href='Demo.aspx?id={3}'>删除</a><br>", item.Name,item.PassWord,item.CreateTime,item.ID));
}
} protected void BtnAdd_Click(object sender, EventArgs e)
{
var rand = new Random().Next(, );
User user = new User();
user.Name = "ceshi"+rand;
user.PassWord = ""+rand;
user.CreateTime = DateTime.Now;
con.Insert(user);//添加数据
Response.Redirect("Demo.aspx");
}
}
最终发布的程序采用winscp上传到vps中的。完美在linux上运行。
运行截图:

上面的系统标识为linux。
三.总结
asp.net mvc 5.0版本及以上在linux mono 环境下支持不是特别好。
感谢@张善友 提醒: Windows不区分大小写,Linux严格区分大小写。所以路径须保持大小写一致。
最后感谢网络上的各位前辈的无私分享。特别感谢 园子@张善友的分享。
源码地址:https://github.com/linezero/sqlitedemo
参考链接: http://www.cnblogs.com/shanyou/p/3322811.html
http://www.jexus.org/
http://www.linuxdot.net/
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码的更多相关文章
- Linux部署ASP.NET 5 (vNext)
原文:Linux部署ASP.NET 5 (vNext) ASP.NET 5 (vNext) Linux部署 引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubun ...
- Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)
Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...
- 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅
做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...
- 转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码
http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubunt ...
- 【asp.net】Linux 部署 asp.net core 项目
Net sdk官网LINUX配置地址:https://www.microsoft.com/net/core#windows 参考:http://www.07net01.com/2016/08/1638 ...
- Linux 部署 ASP.NET Core 的一些问题记录
异常错误: 关闭 IP6 #修改 vi /etc/sysctl.conf # 添加如下三条设置 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.co ...
- Linux学习(二十)软件安装与卸载(三)源码包安装
一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...
- Asp.Net使用加密cookie代替session验证用户登录状态 源码分享
首先 session 和 cache 拥有各自的优势而存在. 他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段 本实例采用vs2010编写 ...
- 【转载】CentOS 7部署ASP.NET Core应用程序
看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...
随机推荐
- 查看openssl的版本
[root@ha01 tengine]# openssl version -a OpenSSL Feb built on: Thu Jul :: UTC platform: linux-x86_64 ...
- Delphi容器类之---TList、TObjectList、TComponentList、TClassList
转载自:http://blog.csdn.net/iseekcode/article/details/4922001 从Delphi5开始VCL中增加了新的Contnrs单元,单元中定义了8个新的类, ...
- [Javascript] 前端随笔
做一个小功能时使用到的一点技术点记录下来: 1.在js中使用定时器: 这两个方法都可以用来实现在一个固定时间段之后去执行JavaScript.不过两者各有各的应用场景. 方 法 实际上,setTime ...
- Spring-boot 开发Web应用
动态修改Freemarker模版: 设置模版属性: spring.freemarker.cache=false 启动应用方式有两种: a. 运行main()函数启动应用:则修改完模版文件后,需要把 ...
- CozyRSS开发记录8-解析一份RSS
CozyRSS开发记录8-解析一份RSS 1.使用Rss20FeedFormatter解析RSS 使用Rss20FeedFormatter配合XmlReader来解析RSS非常的简单,几行搞定: 来试 ...
- Log4Net记录日志的使用
Log4net 基本样式: <log4net> <appender name="LogFileAppender" type="log4net.Appen ...
- CollectionView水平和竖直瀑布流的实现
最近在项目中需要实现一个水平的瀑布流(即每个Cell的高度是固定的,但是长度是不固定的),因为需要重写系统 UICollectionViewLayout中的一些方法通过计算去实现手动布局,所以本着代码 ...
- ionic build Android错误记录未解决
1.try itcordova -v cordova create testing cd testing cordova plugin add cordova-plugin-sim cordova p ...
- GIT版本管理工具
原文:http://blog.csdn.net/ithomer/article/details/7527877 Git 是一个分布式版本控制工具,它的作者 Linus Torvalds 是这样给我们介 ...
- 安卓手持智能POS端上能扫描开单的软件-店面销售开单系统
安卓移动POS终端上能扫描开单的软件: 一.登录验证,以业务员.密码登录: 二.订单列表,显示相关信息,包括日期.单据号.客户名.金额.单据状态.有新增订单及按特定条件查询订单的功能(日期.客户等). ...