ubuntu+mono+PetaPoco+Oracle+.net 程序部署
前言:将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
- 下载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 程序部署的更多相关文章
- .net程序部署(mono方式)
某一次 我同事用了这个词 ,说这样才显得够专业 擦.把某某项目 部署到服务器上 .擦 不就是拷个文件过去运行么.月亮 还是绵羊 我搞不清楚了 咱英文不好,绵羊叫的声音?.你就叫我山寨程序猿 随意 一 ...
- netcore程序部署 ubuntu 16.0.4 报错 The type initializer for 'System.Net.Http.CurlHandler'的解决方案
最近业务扩展需要把netcore程序部署到ubuntu 16.0.4上,因为代码里面用到了HttpClient 请求. 部署ubuntu后一直报错 参考地址:https://github.com/do ...
- 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台
使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...
- C#程序部署到Android
C#是一种优秀的编程语言,语法之优雅,代码之简洁使得众多软粉多年来对她不离不弃. 但是如何将C#程序部署到Linux, Android等平台,这当然是得依靠众所周知的Mono. 本文Demo程序比较简 ...
- Ubuntu 14.04 上使用 Nginx 部署 Laravel
本教程将会涉及以下工具: Ubuntu 14.04 LTS PHP 5.5 MySQL Laravel 5.0 Nginx 参考文章:Ubuntu 14.04 上使用 Nginx 部署 Laravel ...
- oracle:程序后台提示Io异常: The Network Adapter could not establish the connection)
今天要用tomcat部署一个系统,windows环境下,oracle和程序在一台机器上. 在配置jndi时,直接写成 jdbc:oracle:thin:@127.0.0.1:1521:orcl.启动程 ...
- 将 Django 应用程序部署到生产服务器
原文出自: http://www.ibm.com/developerworks/cn/opensource/os-django/ 比较有启发性质的一篇文章,会避免很多弯路 Django 是一个基于 P ...
- deployment与Web应用程序部署
定义用于支持 Web 应用程序部署的配置设置. <deployment retail="true|false" /> retail属性:设置一个值,该值指定是否以发布模 ...
- IIS安装与MVC程序部署
最近在做访客系统,虽然说不是什么多大的项目,但麻雀虽小五脏俱全,使用EF Code First+Mysql+Frozenui响应式布局,感觉通过这个项目学到好多东西,Mysql的使用.EF映射Mysq ...
随机推荐
- hdu_1370Biorhythms(互素的中国剩余定理)
Biorhythms Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...
- Linux磁盘使用过载
系统出现磁盘占用达到100%导致系统崩溃 查看那些个磁盘使用达到100% 命令 df -h 我们发现是www目录使用达到100%,开始清理,首先查找大于100M的大文件 find / -size + ...
- c++(递归和堆栈)
看过我前面博客的朋友都清楚,函数调用主要依靠ebp和esp的堆栈互动来实现的.那么递归呢,最主要的特色就是函数自己调用自己.如果一个函数调用的是自己本身,那么这个函数就是递归函数. 我们可以看一下普通 ...
- Caused by: java.sql.SQLException: Couldn't perform the operation getAutoCommit: You can't perform any operations on this connection. It has been automatically closed by Proxool for some reason (see lo
系统启动,一段时间不操作,然后在来操作时,报错如下: Caused by: java.sql.SQLException: Couldn't perform the operation getAutoC ...
- URL编码的方法
Global 对象的encodeURI()和encodeURIComponent()方法可以对URI(Uniform ResourceIdentifiers,通用资源标识符)进行编码,以便发送给浏览器 ...
- AD转换
一.AD转换的概念 AD转换的功能是把模拟量电压转换为数字量电压.DA转换的功能正好相反,就是讲数字量转换位模拟量. 二.芯片PCF8591介绍 PCF8591是一个单片集成.单独供电.低功耗.8- ...
- jQuery:图片自动变换
<script type="text/javascript"> var aa=0; //设置变换时间为2s var timeChange=2000; //定义数组 va ...
- iOS 注册页面 报错
1.SpringBoard 无法启动应用程序(错误:-3) 方法:重启模拟器 2.
- java中的按位与运算
package scanner; public class SingleAnd { public static void main(String[] args) { int[] first = {10 ...
- php等比例压缩图片
<?php function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); ...