質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

4回答

7733閲覧

C# oracleの接続に関して

color

総合スコア90

Oracle Database

Oracle Databaseは、米オラクルが開発・販売を行うリレーショナルデータベース管理システムです。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/05/23 09:14

編集2022/01/12 10:55

前任の案件を引き継いでいるのですが、
C#でwebサービスをしているのですが、
自身のコンパイルでは、oracleに接続出来ません。
ユーザーとかの前段階で下記のコードが通りません。

c#

1DbProviderFactory factory = DbProviderFactories.GetFactory("Oracle.DataAccess.Client");

ちなみにtryで囲ってexceptionのMessageには、
以下の文言が出ております。


呼び出しのターゲットが例外をスローしました。


oracle.DataAccessを参照設定に入れているのですが、
その辺りが原因なのでしょうか。
確認項目等、ご指摘頂ければ幸いで御座います。

【補足】
色々と情報が足りていなくすみません。

環境としては、
テストサーバがあり、ローカルでコンパイルをして出来上がったファイルを
テストサーバに置く(入れ替える)環境です。
そこで自分の環境でコンパイルしたものが上手く動作してません。
※web.configは入れ替えてなく、置き換える前が正常なので、
問題はないのかと思ってます。

innerException.Messageも確認しましたが、
'Oracle.DataAccess.Client.OracleClientFactory' のタイプ初期化子が例外をスローしました。
との事です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

catch した Exception の InnerException には何も設定されていませんか?

投稿2017/05/23 09:40

workaholist

総合スコア559

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

開発環境の話をしているのか運用環境の話をしているのかどっちですか?

想像ですが、質問者さんの開発環境の話をしていて、質問者さんの開発マシンに ODP.NET がインストールしてないような気がするのですが、いかがですか?

ODP.NET をインストールすると、インストールしたマシンの GAC にプロバイダのアセンブリが登録されて、machine.config に必要な設定がなされると思うのですが、そのあたりはいかがですか?

【追伸】

上のレスが舌足らずで、話が通じてなかったかもしれないので以下に補足します。

質問に「前任の案件を引き継いでいる」と書いてあったのですが、サーバーはそのまま引き継いだものの、前任者の開発マシンまでは引き継いでいないだろうと想像してます。

で、前任者は ODP.NET を自分の開発マシンにインストールして開発していたが、質問者さんは ODP.NET はインストールしていないのではないかとさらに想像を膨らませて上のレスをしました。

私の想像が実際と違っていたらその旨連絡ください。

投稿2017/05/23 10:32

編集2017/05/24 00:52
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/05/23 10:43

自分は ODP.NET = Managed な ODP の話をしています。質問の「oracle.DataAccessを参照設定に」というところから質問者さんも Managed な ODP の話をしていると理解しています。
hidori

2017/05/23 14:32

Managed な ODP の場合、アセンブリを GAC 登録することなく、プロジェクトに NuGet 参照を追加するだけで使用することが出来ませんか?
退会済みユーザー

退会済みユーザー

2017/05/23 15:42

「 NuGet 参照を追加」とはどういう意味でしょう? NuGet で ODP.NET をインストールするということですか? 何にせよ自分は NuGet で ODP.NET 関係を触ったことがないので、何がどうなるか分かりません。hidori さんの方で情報をお持ちなら、質問者さんに情報提供していただければと思います。
hidori

2017/05/23 16:02 編集

>自分は ODP.NET = Managed な ODP の話をしています。 ↑の URL で示した Oracle.ManagedDataAccess NuGet パッケージは、ODAC への依存を含まない実装で数年前から存在ます。 これは、アセンブリを GAC へ登録しなくても利用可能なのです。 >「 NuGet 参照を追加」とはどういう意味でしょう? NuGet で ODP.NET をインストールするということですか? ザックリ言えば「インストール」ですが、細かく言うと「アセンブリを含んだ NuGet パッケージのダウンロード&パッケージへのアセンブリ参照の追加など」が行われます。 > 何にせよ自分は NuGet で ODP.NET 関係を触ったことがないので、何がどうなるか分かりません。 > hidori さんの方で情報をお持ちなら、質問者さんに情報提供していただければと思います。 もちろん、必要だと判断したらそうします。 いまのところ、発生した例外の種別も不要なので、その段階ではないと判断しています。 「GAC にアセンブリの登録が必要である」と主張されているようでしたので、「GAC への登録が不要な ODP.NET の実装がある」ことを示したツモリでした。 意図がうまく伝わらなかったようで、申し訳ありませんでした。
退会済みユーザー

退会済みユーザー

2017/05/24 00:54 編集

hidori さん> > 「GAC にアセンブリの登録が必要である」と主張されているようでした 私のレスが舌足らずで、そこのところ誤解を招いたようです。 質問に「前任の案件を引き継いでいる」と書いてあったのですが、サーバーはそのまま引き継いだものの、前任者の開発マシンまでは引き継いでいないだろうと想像してます。 で、前任者は ODP.NET を自分の開発マシンにインストールして開発していたが、質問者さんは ODP.NET はインストールしていないのではないかとさらに想像を膨らませて上のレスをしました。 質問者さんに話が通じてないかもしれませんね。上記のことを質問欄に追記しておきます。
hidori

2017/05/24 03:40 編集

+1
guest

0

とりあえず、原因の切り分けをやりましょう。
ということで(PHPの例ですが)手作業の接続確認から
https://teratail.com/questions/34202

ODBC接続の場合はそっちも確認するです。
あー、WEBサービスって書いてるのでそれはないか?
ってか、外してる気がしてきた。
混乱させたら申し訳ないス。

投稿2017/05/23 10:22

takasima20

総合スコア7458

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

※ まずはどんな例外が発生しているかを見るべきですが。。

web.config に必要な記述は追加してますか?

Oracle 用の記述は覚えていませんが、DbProviderFactory を使用するなら少なくとも system.data セクションの DbProviderFactories 要素

xml

1 <system.data> 2 <DbProviderFactories>

配下にそれなりの記述が必要です。

投稿2017/05/23 09:54

編集2017/05/23 10:29
hidori

総合スコア402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問