设为首页 收藏本站
查看: 1521|回复: 0

[经验分享] Linux 部署ASP.NET SQLite 应用 的坎坷之旅 附demo及源码

[复制链接]

尚未签到

发表于 2015-10-27 03:07:31 | 显示全部楼层 |阅读模式
  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上运行。
  运行截图:
DSC0000.png
  上面的系统标识为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/
  
  如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-131101-1-1.html 上篇帖子: linux 下sqlite的 C编程之sqlite3_get_table 下篇帖子: sqlite3 shell方向键、浏览历史命令不能用的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表