前言:将windows 下开发的 .net 控制台程序(连接Oracle数据库)部署到 ubuntu 下步骤记录  2017-09-19

实验所用机器为虚拟机Ubuntu16.04  amd64

安装Mono环境

  首先添加Mono安装源:

vi /etc/apt/sources.list.d/mono.list

  添加内容:

deb http://download.mono-project.com/repo/debian wheezy main

  保存后运行 apt-get update ,可能会出现错误提示:

W: GPG error: http://download.mono-project.com wheezy Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY A6A19B38D3D831EF

  运行以下命令添加key:

sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com A6A19B38D3D831EF

  再次运行 apt-get update ,更新完成后运行 apt-get install mono-complete 即可安装最新版本的Mono,安装完成后运行 mono -V 查看Mono版本

安装Oracle Client

  1. 下载Oracle client   (oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64.rpm)http://www.oracle.com/technetwork/cn/topics/linuxx86-64soft-095635-zhs.html

    2. 安装alien,和依赖包

    sudo apt-get install alien

    sudo apt-get install libaio1

   3. 使用alien吧rpm包转换成deb包,并且安装:

    sudo alien -i oracle-instantclient12.2-basic-12.2.0.1.0-1.x86_64.rpm

    4.安装完后,类库会放到 /usr/lib/oracle/版本号/client/lib/ ,需要做一个软连接,否则Mono找不到需要的共享库

    sudo ln -s /usr/lib/oracle/12.2/client64/lib/libclntsh.so.12.1 /usr/lib/oracle/12.2/client64/lib/libclntsh.so

5. 更新ldconfig设置:

    在 /etc/ld.so.conf.d目录下新建 oracle-client.conf  , 输入Oracle Client 类库的路径, /usr/lib/oracle/12.1/client/lib

    别忘了执行  sudo ldconfig

     6.在服务器上执行:select userenv('language') from dual;  获取服务器的字符集

    查看客户端字符集,在终端下执行:

    echo $NLS_LANG

    修改客户端字符集:

    sudo gedit /etc/environment

    在environment 文件中增加以下内容:

    NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

    export NLS_LANG

    重新启动操作系统即可。

修改程序

  1.PetaPoco源码修改:

    PetaPoco报空对象引用 的错误,修改PetaPoco.cs中下面代码:

    public override void PreExecute(IDbCommand cmd)

    {

    //注掉下面一行,修改为下面的代码。Command对象里不存在"BindByName"的属性,此处会报错

    //cmd.GetType().GetProperty("BindByName").SetValue(cmd, true, null);

    PropertyInfo bindByNameInfo = cmd.GetType ().GetProperty ("BindByName");

    if (bindByNameInfo!=null) {

    bindByNameInfo.SetValue (cmd, true, null);

    }

    }

  2. 添加 System.Data.OracleClient.dll 引用

  3. 数据库连接字符串修改为

     <add name="xxx" providerName="Oracle.ManagedDataAccess.Client" connectionString="Data Source=(DESCRIPTION=        (ADDRESS_LIST=(ADDRESS=    (PROTOCOL=TCP)(HOST=xxx)(PORT=1521)))        (CONNECT_DATA=(SERVICE_NAME=xxxx)));User Id=xxx;PassWord=xxx;" />

运行程序

  mono xxx.exe

后记:

  程序运行过程没有问题,如果停止时会报数据库连接释放的问题,此问题应该是Oracle客户端的dll有问题,目前还没找出解决办法!

ubuntu+mono+PetaPoco+Oracle+.net 程序部署的更多相关文章

  1. .net程序部署(mono方式)

    某一次 我同事用了这个词 ,说这样才显得够专业 擦.把某某项目 部署到服务器上 .擦 不就是拷个文件过去运行么.月亮 还是绵羊  我搞不清楚了 咱英文不好,绵羊叫的声音?.你就叫我山寨程序猿 随意 一 ...

  2. netcore程序部署 ubuntu 16.0.4 报错 The type initializer for 'System.Net.Http.CurlHandler'的解决方案

    最近业务扩展需要把netcore程序部署到ubuntu 16.0.4上,因为代码里面用到了HttpClient 请求. 部署ubuntu后一直报错 参考地址:https://github.com/do ...

  3. 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

    使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...

  4. C#程序部署到Android

    C#是一种优秀的编程语言,语法之优雅,代码之简洁使得众多软粉多年来对她不离不弃. 但是如何将C#程序部署到Linux, Android等平台,这当然是得依靠众所周知的Mono. 本文Demo程序比较简 ...

  5. Ubuntu 14.04 上使用 Nginx 部署 Laravel

    本教程将会涉及以下工具: Ubuntu 14.04 LTS PHP 5.5 MySQL Laravel 5.0 Nginx 参考文章:Ubuntu 14.04 上使用 Nginx 部署 Laravel ...

  6. oracle:程序后台提示Io异常: The Network Adapter could not establish the connection)

    今天要用tomcat部署一个系统,windows环境下,oracle和程序在一台机器上. 在配置jndi时,直接写成 jdbc:oracle:thin:@127.0.0.1:1521:orcl.启动程 ...

  7. 将 Django 应用程序部署到生产服务器

    原文出自: http://www.ibm.com/developerworks/cn/opensource/os-django/ 比较有启发性质的一篇文章,会避免很多弯路 Django 是一个基于 P ...

  8. deployment与Web应用程序部署

    定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...

  9. IIS安装与MVC程序部署

    最近在做访客系统,虽然说不是什么多大的项目,但麻雀虽小五脏俱全,使用EF Code First+Mysql+Frozenui响应式布局,感觉通过这个项目学到好多东西,Mysql的使用.EF映射Mysq ...

随机推荐

  1. HDU5447 Good Numbers

    http://acm.hdu.edu.cn/showproblem.php?pid=5447 网上好像只找到java的题解,写完就发一下c++代码咯,顺便纪念一下+存个int128板子 做法可以看tj ...

  2. linux 操作系统/xxx目录下都是什么文件?

    /bin:存放最常用命令: /dev:设备文件: /etc:存放各种配置文件: /home:用户主目录: /lib:系统最基本的动态链接共享库: /mnt:一般是空的,用来临时挂载别的文件系统: /b ...

  3. solr服务的搭建(以solr4.1实现)

    1.准备工作:一个干净的Tomcat,solr-4.10.3. 2.新建一个文件夹我这里命名为solr,将Tomcat和solr-4.10.3放进去.新建一个solrhome的文件夹,里面放的是sol ...

  4. [学习OpenCV攻略][011][显示图片]

    学习资料: http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/tutorials.html   包含头文件 core.hpp:包含 ...

  5. HTTP协议----->连接管理

    1.  TCP连接 1.1  TCP为HTTP提供了一条可靠的比特传输管道. TCP(Transmission Control Protocol)----传输控制协议,是主机对主机层的传输控制协议,提 ...

  6. Spider_Man_4 の BeautifulSoup

    一 介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...

  7. SSAS属性中更改AllowedBrowsingFolders的值后才能更改其它文件夹的值

    首先 以管理员身份运行 打开SQL Server Management Studio (SSMS). 在Sql Server Analysis Service中的属性中有很多文件夹属性,决定了存放CU ...

  8. linux下 ls -l 命令显示结果每一列代表什么意思

    第一个栏位,表示文件的属性.Linux的文件基本上分为三个属性:可读(r),可写(w),可执行(x).但是这里有十个格子可以添(具体程序实现时,实际上是十个bit位).第一个小格是特殊表示格,表示目录 ...

  9. SSL和SSH有什么区别

    SSL 是一种安全协议,它为网络(例如因特网)的通信提供私密性.SSL 使应用程序在通信时不用担心被窃听和篡改. SSL 实际上 是共同工作的两个协议:"SSL 记录协议"(SSL ...

  10. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...