■No53500 (たか さん) に返信 > newされたコネクションを見てみると、stateがClosedで、Openしているのに > 開けていないようです。 newされたコネクションはOpenするまでClosedなのは正常だと思いますが、 OpenしてもstateがClosedのままということですか? > コネクションオープン後の、BeginTransaction()で落ちるようになりました。 今は以下のコードのような状況ですね? 例外が発生せずに落ちちゃうんですか? 「10.1.0.400」のところを「10.1.0.200」にしても同じでしょうか? using (var conn = new System.Data.OracleClient.OracleConnection()) { conn.ConnectionString = "Data Source=TESTDB;User ID=ユーザーID;Password=パス"; conn.Open(); } using (var conn = new Oracle.DataAccess.Client.OracleConnection()) // ここは大丈夫で、 { conn.ConnectionString = "Data Source=TESTDB;User ID=ユーザーID;Password=パス"; conn.Open(); using (var tran = conn.BeginTransaction()) // ここでエラー発生?異常終了? { } }
■No53534 (たか さん) に返信 app.configに <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="Oracle.DataAccess" culture="neutral" publicKeyToken="89B483F429C47342" /> <publisherPolicy apply="no" /> </dependentAssembly> </assemblyBinding> </runtime> とかかいて、バージョンポリシーによるバージョンリダイレクトが起こらないように すればいいんじゃ?
はつね さん、ありがとうございます。 <publisherPolicy apply="no" />〜 は試したのですが、やはり同様のエラーでした。 なしさん、検証までしていただいてありがとうございます。 申しわけなくなってきました。 こちらでも、私以外の環境で試してみたのですが Oracle11gインストールのみをインストールした↓の環境では、エラーが発生しませんでした。 1.111.6.0 2.111.6.0 これから、10g系のODPのバグ?かと思っていましたが なしさんの環境だと、ほぼ私と同じ環境で、エラー再現しないのですね。 ますますわからなくなってきました。 ところで、追加で情報なのですが、connectionのnewの例外の後に もう1つ例外が発生します。 (これは再現コードでは再現せず、Windowsアプリでのみ発生します) ------------------------------------------------------------------------------------------------------------------- ■最初のエラー Message "'Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしました。" string 場所 Oracle.DataAccess.Client.OracleConnection..ctor()\r\n 場所 Oracle.DataAccess.Client.OracleClientFactory.CreateConnection()\r\n 場所 Listrante.Common.Db.TransactionManager.ConnectTest(ProviderKind kind, String connectStr)" string Message "Oracleクライアントのバージョンと互換性のないプロバイダです。" string StackTrace 場所 Oracle.DataAccess.Client.OracleInit.Initialize()\r\n 場所 Oracle.DataAccess.Client.OracleConnection..cctor()" string ------------------------------------------------------------------------------------------------------------------- ■2回目のエラー Message "'Oracle.DataAccess.Client.OracleConnection' のタイプ初期化子が例外をスローしました。" string StackTrace 場所 Oracle.DataAccess.Client.OracleConnection.Dispose(Boolean disposing)\r\n 場所 System.ComponentModel.Component.Finalize()" string InnerException {"Oracleクライアントのバージョンと互換性のないプロバイダです。"} System.Exception {Oracle.DataAccess.Client.OracleException} StackTrace " 場所 Oracle.DataAccess.Client.OracleInit.Initialize()\r\n 場所 Oracle.DataAccess.Client.OracleConnection..cctor()" string ------------------------------------------------------------------------------------------------------------------- 2回目のエラーは、別スレッド(.net framework?)が、connectionをdisposeしようとして 同様のエラーが発生していると思ってよいですよね。 ちなみにこのエラーは、catchしてもアプリケーション終了しますが、このアプリ終了はキャンセルできないですよね。
- Child Tree -