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

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

ただいまの
回答率

88.90%

C# oracleの接続に関して

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 3,440

color

score 63

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

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

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


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


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

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

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/24 13:58

    【補足】に対して

    インスタンス生成が失敗しているのではないでしょうか。
    ODP.NETがインストールされていないとか。
    あとは下記の事象もあるようです。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=53459&KLOG=90

    キャンセル

0

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

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

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

  <system.data>
    <DbProviderFactories>

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

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

【追伸】

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

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

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

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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/05/24 00:58 編集

    >自分は 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 09:46 編集

    hidori さん>

    > 「GAC にアセンブリの登録が必要である」と主張されているようでした

    私のレスが舌足らずで、そこのところ誤解を招いたようです。

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

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

    質問者さんに話が通じてないかもしれませんね。上記のことを質問欄に追記しておきます。

    キャンセル

  • 2017/05/24 12:39 編集

    +1

    キャンセル

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

  • ただいまの回答率 88.90%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る