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.1.tar.bz2

cd mono-3.2.1

./configure –prefix=/usr

make    此时出现以下错误

../src/.libs/libeglib.a(libeglib_la-gunicode.o): In function `monoeg_g_get_charset’:
/root/mono-3.2.1/eglib/src/gunicode.c:223: undefined reference to `locale_charset’
collect2: ld returned 1 exit status
make[4]: *** [test-eglib] Error 1
make[4]: Leaving directory `/root/mono-3.2.1/eglib/test’
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/mono-3.2.1/eglib’
make[2]: *** [all] Error 2
make[2]: Leaving directory `/root/mono-3.2.1/eglib’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/mono-3.2.1′
make: *** [all] Error 2

修改 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.4.tar.gz
tar -zxvf jexus-5.6.4.tar.gz
cd jexus-5.6.4
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(100, 999);
            User user = new User();
            user.Name = "ceshi"+rand;
            user.PassWord = "123456"+rand;
            user.CreateTime = DateTime.Now;
            con.Insert(user);//添加数据
            Response.Redirect("Demo.aspx");
        }
    }

最终发布的程序采用winscp上传到vps中的。完美在linux上运行。

运行截图:

上面的系统标识为linux。

三.总结

asp.net mvc 5.0版本及以上在linux mono 环境下支持不是特别好。

jexus 对于大小写敏感,必须保持大小写一致。

最后感谢网络上的各位前辈的无私分享。特别感谢 园子@张善友的分享。

源码地址:https://github.com/linezero/sqlitedemo

参考链接: http://www.cnblogs.com/shanyou/p/3322811.html

      http://www.jexus.org/

      http://www.linuxdot.net/

如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

时间: 2024-10-16 07:54:55

Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码的相关文章

Linux部署ASP.NET 5 (vNext)

ASP.NET 5 (vNext) Linux部署 引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubuntu Ubuntu是基于linux的免费开源桌面PC操作系统 十分契合英特尔的超极本定位 支持x86.64位和ppc架构 全面支持网页浏览器   WPS.Ubuntu基于Debian发行版和GNOME桌面环境,而从11.04版起,Ubuntu发行版放弃了Gnome桌面环境,改为Unity,与Debian的不同在于它每6个月会发布一个新版本.Ubuntu的目标

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

http://linux.cn/article-5015-1.html 问题:我需要为我的Debian或Ubuntu下载并安装完整树结构的内核源码以供编译一个定制的内核.那么在Debian或Ubuntu上有什么可行的方法来下载完整的内核源码呢? 在给你的Linux安装完整内核源码之前,先问问自己是否真的需要这样做.如果你仅仅是尝试去编译一个内核模块或是为内核定制驱动,你并不需要完整的内核源码树.你只需要安装一些与内核对应的头文件,这样就足够了. 只有在你需要生成一个定制的内核,而且内核源码中的一

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

Net sdk官网LINUX配置地址:https://www.microsoft.com/net/core#windows 参考:http://www.07net01.com/2016/08/1638058.html http://www.cnblogs.com/calvinK/p/5628298.html http://www.mamicode.com/info-detail-1535706.html http://www.cnblogs.com/ants/p/5732337.html 1.项

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

首先 session 和 cache 拥有各自的优势而存在.  他们的优劣就不在这里讨论了. 本实例仅存储用户id于用户名,对于多级权限的架构,可以自行修改增加权限字段   本实例采用vs2010编写,vb和c#的代码都是经过测试的:一些童鞋说代码有问题的 注意下    什么? 你还在用vs2008 vs2005? 请自行重载 带有 optional 标致的函数   童鞋们提到的 密码修改后 要失效的问题 当时没有想到 个人认为 大致方向可以> >1. 每个用户生成1个xml 里面保存随机的几

2、linux(ubuntu12.04)下:通过pip对python软件或源码安装和卸载,以及正常软件或源码的安装和卸载

以下通过安装和卸载ryu来进行解释: 1.ryu安装 1.1.正常模式下安装步骤 (1)第一种方式:简易安装方法apt-get:sudo apt-get install ryu (2)第二种方式:源码安装: 首先,有configure文件的,首先运行命令: ./configure 然后,有makefile文件的,运行命令:make all 最后,运行命令:make install 1.2.安装Python的源码或软件 (1)第一种方式:现在Python很多源码都支持简易安装pip.输入命令:pi

SQLite第二课 源码下载编译

1 源码下载以及文件说明 源码下载地址:http://www.sqlite.org/download.html 下载的代码:sqlite-preprocessed-3081101.zip 下载页面的内容说明: /*** 最简单基本的源码,所有的代码实现都在sqlite3.c文件中实现,简称单源文件, 对于我们研究SQLite源码没有多大的帮助,层次并不分明,适合于编译成库提供 动态链接.SQLite有代码15万行,研究单文件源码无从下手 ***/ Source Code sqlite-amalg

Linux学习日记——源码编译Apache

[本文为笔者在学习Linux 下的软件安装时,尝试使用源码安装Apache 的过程,事后进行一个小小的总结,发现错误望指正.] 一.典型的源码编译安装软件的过程包括以下3步: 1) 运行 configure 命令,并结合必要的参数以生成Makefile :(读者可以自行百度Makefile 相关知识) 2) 运行 make 命令生成各类模块和主程序: 3) 运行 make install 命令将必要的文件复制到安装目录中. (以上过程都在对应软件安装包的根目录中进行) 二.安装过程 Linux

手把手教你部署WEB邮件系统Squirrelmail小松鼠(内附源码包)

简介 Web邮件系统指的是提供给用户发信.收信的网页操作界面,能够完成和MUA软件类似的邮件管理.通讯簿等附加功能,同时Web邮件系统依赖于已有的收信.发信服务器,但不需要用户预先配置邮箱属性,因此使用更加方便,在Internet中应用十分广泛.而SquirrelMail是使用PHP开发的一套网页程序可以与 Postfix. Dovecot很好地协作,通过Web界面提供邮件发送.接收和管理操作. 实验环境 系统环境:centos6.5 LinuxIP地址:192.168.1.77(Linux)

用批处理来自动化项目编译及部署(附Demo)

阅读目录 介绍 详细 处理 结论 Demo下载 介绍 一个项目从立项开始,可能就已经根据公司的配置模板将目录,文档结构定义出来.有动态库,也有静态库,在没有专门的CMO的时候,往往组长,若干开发人员承担版本发布的工作.次工作即枯燥,又容易出错,那么怎么样才能将这样的工作略微自动化点.以下就通过很简单的很古老的批处理来略微自动化下. 详细 一:目录结构 每个公司的目录结构不一样,当略有相同,比如:管理库,需求库,设计库,代码库,引用库(包库),资源库,编译模板库,编译版本库,发布版本库等.如下图: