惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - culturenet

jQuery Mobile 小问题解决一例 flash的传值问题 Oracle 升级以后 HTTP Server 一则小错误解决 installshield安装文件的制作小技巧--附加数据库 使用installshild解决某些安装文件无法在win2003上安装的问题 vsta下vs2005产生错误,解决之 Test Windows Live Write (Bate) Gridview中当设置自动生成列时对列中字段使用 html代码显示 修改ppt另存为网页的mht文件内容,更改其显示方式 修改OleDB provider 移植 Data Application Blocks项目中使用存储过程的应用(Oracle or MsSqlServer)到Microsoft Access Enterprise Library- Data Block 使用MS Access的问题的解决 LinkButton 的提交两次问题的解决 Enterprise Library- Data Block使用oracle存储过程,字符串参数传入值为""时出现问题的解决 Enterprise Library - Data Block oracle返回 cursor 问题的解决 web.config中的pageBaseType问题 修改客户端Script,解决r.a.d.controls Q2 2005中TreeView 控件遮挡问题 [导入]汉字区位码查询 [导入]c#取得汉字的拼音的首字母。 [导入]url传递中文的解决方案总结 [导入]转:url传递中文的解决方案总结
Oracle Services For Microsoft Transaction Server的问题的发现与解决
culturenet · 2005-10-05 · via 博客园 - culturenet

最近重做了本本的操作系统,顺便把9i换成了10g,结果新创建的 WEB SERVICE 产生了如下错误:

System.DllNotFoundException: 无法加载 DLL (oramts.dll)。 at System.Data.OracleClient.UnsafeNativeMethods.OraMTSJoinTxn(HandleRef pCtxt, ITransaction pTrans) at System.Data.OracleClient.TracedNativeMethods.OraMTSJoinTxn(HandleRef pCtxt, ITransaction pTrans) at System.Data.OracleClient.OciEnlistContext.Join(ITransaction transaction) at System.Data.OracleClient.OracleInternalConnection.Enlist(String userName, String password, String serverName, ITransaction transaction, Guid transactionGuid) at System.Data.OracleClient.OracleInternalConnection.ActivateForDistributedTransaction() at System.Data.OracleClient.OracleInternalConnection.Activate() at System.Data.OracleClient.DBObjectPool.GetObject(Object owningObject, Boolean& isInTransaction) at System.Data.OracleClient.OracleConnectionPoolManager.GetPooledConnection(String encryptedConnectionString, OracleConnectionString options, OracleConnection owningObject, Boolean& isInTransaction) at System.Data.OracleClient.OracleConnection.OpenInternal(OracleConnectionString parsedConnectionString, Object transact) at System.Data.OracleClient.OracleConnection.Open() at Microsoft.Practices.EnterpriseLibrary.Data.Database.OpenConnection() at Microsoft.Practices.EnterpriseLibrary.Data.Database.ExecuteNonQuery(DBCommandWrapper command) at ReSource.MyLibService.ValidUser(String P_UserID, String P_UserPass) in e:\aspnet\resource\webservice\libservice.asmx.cs:line 55 at ReSource.MyLibService.VerifyCredential() in e:\aspnet\resource\webservice\libservice.asmx.cs:line 41

WEB SERVICE 的代码如下:

[WebMethod(TransactionOption=TransactionOption.Required)]
public string ValidUser(String P_UserID, String P_UserPass) 
{
try
        
{                                
        
//这里有一些读取数据库的操作。
        
//这里是提交事务
        }

catch(OracleException er)
        
{
        
//回滚事务
        
        }
 

开始估计是 10g 的驱动什么的出了问题。上网搜索解决办法。发现有不少的类似的问题。但是没有什么很好的解决的方法。

网上这么说:
 his is an Oracle change, not an MS issue. If you go to otn.oracle.com and
look up ODP.NET, you will find that the two Oracle versions of the ODP (pre
10g and 10g) are different, as well. MS has not updated its implementation
for 10g yet.

基于上面的说法,开始以为9i应该就没有问题了。于是把10g卸载,重新,安装9i 。

结果发现也是产生的同样的问题。但是无论在9i还是10g下面,和WEB SERVICE在同一个目录下面的asp.net页面都运行的非常好。于是就百思不得其解。给我郁闷坏了。当时怎么也找不到解决的办法。

网上也找到一些相关的内容。根据里面的设置,也没有起作用。

参见:

配置Oracle,使它支持MTS下分布事务

 、在MTS使用ODP读写Oracle是出现无法加载OraMTS的解决办法根据里面的设置,也没有起作用。

  就上oracle的网站上看看。没有metlink帐号,所以找东西找的也很辛苦。也基本上没有什么收获。后来,决定不找了,自己看看代码,找出问题到底出在哪儿。
 
 鉴于在web service中的事务处理不好用,那就从web serivce上下手。我试着换掉了事务处理的代码。不进行事务处理,把 TransactionOption=TransactionOption.Required 这一句也去掉。运行,一切正常。看来是事务处理相关的Component 出现了错误。正好看到oracle网上有 ODP.net的 9207的版本,于是就看了看主要的内容,看到里面有一个 Oracle Services For Microsoft Transaction Server 9.2.0.7.0 而我的机器上的是9.2.0.1.0版本的,于是下载下来,升级。接着运行带有事务处理的web service,提示出现引用对象为空的异常,以前的没有找到dll文件的异常没有了。一阵狂喜,呵呵,离成功不远了。考虑安装过程中替换了一些dll可能需要重新启动才能生效。于是重新启动。试着运行。ok!正常运行。问题解决。心情轻松了不少!