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及源码的更多相关文章

  1. Linux部署ASP.NET 5 (vNext)

    原文:Linux部署ASP.NET 5 (vNext) ASP.NET 5 (vNext) Linux部署   引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubun ...

  2. Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码)

    Linux下使用FreeTDS访问MS SQL Server 2005数据库(包含C测试源码) http://blog.csdn.net/helonsy/article/details/7207497 ...

  3. 阿里云 Windows Server 2012 r2 部署asp.net mvc网站 平坑之旅

    做了多年的Web开发工作,网站部署也不在话下,可每次部署却并不是十分顺利,将本次在阿里云服务器上部署asp.net mvc网站遇到的问题记录如下. 平台是阿里云ECS,操作系统是 Windows Se ...

  4. 转载 :Linux有问必答:如何在Debian或Ubuntu上安装完整的内核源码

    http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubunt ...

  5. 【asp.net】Linux 部署 asp.net core 项目

    Net sdk官网LINUX配置地址:https://www.microsoft.com/net/core#windows 参考:http://www.07net01.com/2016/08/1638 ...

  6. Linux 部署 ASP.NET Core 的一些问题记录

    异常错误: 关闭 IP6 #修改 vi /etc/sysctl.conf # 添加如下三条设置    net.ipv6.conf.all.disable_ipv6 = 1    net.ipv6.co ...

  7. Linux学习(二十)软件安装与卸载(三)源码包安装

    一.概述 源码包安装的优点在于它自由程度比较高,可以指定目录与组件.再有,你要是能改源码也可以. 二.安装方法 步骤 1.从官网或者信任站点下载源码包 [root@localhost ~]# wget ...

  8. Asp.Net使用加密cookie代替session验证用户登录状态 源码分享

    首先 session 和 cache 拥有各自的优势而存在.  他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段   本实例采用vs2010编写 ...

  9. 【转载】CentOS 7部署ASP.NET Core应用程序

    看了几篇大牛写的关于Linux部署ASP.NET Core程序的文章,今天来实战演练一下.2017年最后一个工作日,提前预祝大家伙元旦快乐.不扯淡,直接进入正题.您有任何问题请在评论区留言. 1.环境 ...

随机推荐

  1. SecureCRT如何与Linux虚拟机进行关联

    首先在宿主机上确认虚拟网卡是否正确工作,并查看其IP地址,如本例中,宿主机的虚拟网卡VMnet8的IP地址为:192.168.121.1/24. VMnet8是VMware用于NAT连接的虚拟网卡. ...

  2. Linux deepin 下sublimes配置g++ openGL

    参考 :http://blog.csdn.net/u010129448/article/details/47754623 ubuntu 下gnome只要将代码中deepin-terminal改为gno ...

  3. 五分钟搭建起一个包含CRUD功能的JqGrid表格

    之前的项目也曾用过JgGrid对它的基本功能也是略有了解,网上有个国外的开源的项目,但是不适合个人的风格,所以花了3天空余的时间封装了下JqGrid,也算是参加开发工作10个月以来写的第一个比较完整的 ...

  4. hash表及Java中的HashMap与HashSet

    链接: http://alex09.iteye.com/blog/539545/ 当程序试图将一个 key-value 对放入 HashMap 中时,程序首先根据该 key 的 hashCode() ...

  5. 高性能的JavaScript--数据访问(2)

    动态作用域 无论是with表达式还是try-catch表达式的catch子句,以及包含()的函数,都被认为是动态作用域.一个动态作用域只因为代码运行而存在.因此无法通过静态分析(查看代码机构)来确定( ...

  6. godaddy1美元虚拟主机

    第一个域名是免费的 ftp连接:新建ftp账号,把配置文件导入相应的ftp客户端(user名可能有问题,使用非加密的模式) SSH连接: 1.开启SSH连接:http://godaddy.idcspy ...

  7. 二分+DP+Trie HDOJ 5715 XOR 游戏

    题目链接 XOR 游戏 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total ...

  8. byobu相关操作

    http://lingbjxm.iteye.com/blog/2155833 重命名窗口:Fn F8

  9. js/javascript format json(js/javascript 格式化json字符串)

    // format json obj string function format_json(txt, compress) { var indentChar = '    '; if (/^\s*$/ ...

  10. web前端面试题汇总

    1.doctype作用 <!DOCTYPE>声明位于位于HTML文档中的第一行,处于 <html> 标签之前.告知浏览器的解析器用什么文档标准解析这个文档.DOCTYPE不存在 ...