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.环境 ...
随机推荐
- DBNEWNAME工具介绍
下面修改数据库的SID和db_name [root@oracle ~]# su - ora11g db11@oracle /home/ora11g$ db11@oracle /home/ora11g ...
- 【leetcode】ZigZag Conversion
题目简述 The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of rows ...
- ubuntu 14.04下spark简易安装
java安装 首先需要上oracle的网站下载 在lib目录下建立一个jvm文件夹 sudo mkdir /usr/lib/jvm 然后解压文件到这个文件夹 sudo tar zxvf jdk-8u4 ...
- 如何把Qlik Sense嵌入到Web应用中
(此文章同时发表在本人微信公众号"dotNET开发经验谈",欢迎右边二维码来关注.) 题记:这是一个给初学者(尤其对VS不熟悉的BI工程师)的入门操作向导. Qlik Sense是 ...
- Ubuntu服务器被黑经历(ElastichSearch漏洞)
起因 最近我们的一台Ubuntu阿里云服务器一直提示有肉鸡行为,提示了好几天,开始并没有关注,然后连续几天后发现应该是个大问题啊.很可能服务被侵入了!!! 寻找线索 一开始我是完全懵逼的状态的,Lin ...
- IIS与Apache共用80端口
Windows server 2003服务器上安装有默认 IIS 6和Apache两个服务器,IIS运行的一个.net程序,apache运行php程序,现在想让它们同时都能通过80端口访问,设置起来还 ...
- CozyRSS开发记录10-RSS源管理
CozyRSS开发记录10-RSS源管理 1.RSS源树结构 做解析体力活很多,把RSS解析的优化先放放,先玩一玩RSS源的管理. 虽然在初步的设计中,RSS源是以一个列表的方式来展示,但是,我觉得如 ...
- adv
1. 对产品质量的认知理念,不仅是是确保没问题,而是通过自身与团队的价值提升产品的质量.潜在问题,竞类产品用户体验,bug产生分析图,流程控制 2. 责任心特质,正能量,热情激情,并且能感染团队成员和 ...
- 进击的Python【第六章】:Python的高级应用(三)面向对象编程
Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语: ...
- linux内存和虚拟内存的使用