- - PR -
.NET2005 と Oracle
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-27 13:37
宜しくおねがいします。
現在、[.NET 2005] にて [Oracle 10g] につなげようとがんばっております。 現在、ローカルWebSite(ASP.NET開発サーバー)にて接続はできるのですが、 「Webサイトの発行」後 同じ開発マシンから自端末のアドレスを入力によりIEページを開き、 ページは開くのですが、 オラクル接続をするボタンを押してみたところ、 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 とエラーが返ってきます。 ------------------------------------------------------ [C#] try { m_OraConnection = new OracleConnection(m_strConnectString); if (m_OraConnection == null) { //@ログ出力:Nullだ! } else { //Aログ出力:Nullではない。 } m_OraConnection.Open(); } catch (Exception ex) { //Bログ出力:オープン失敗!! } ------------------------------------------------------ m_OraConnection = new OracleConnection(m_strConnectString); コネクション生成時はNullではなさそうです。Aへ流れました。 Open時にExceptionがthrowされてBへ流れました。 開発時のDebugモードではきちんと動作しているのですが、 (Webサイト構築時は ファイルシステム 選択) Webサイト発行によるWebサイトだとエラーになってしまいます。 どなたか同じ境遇の方、原因をご存知の方がおられましたら お知恵をお貸しいただけないでしょうか? よろしくお願いいたします。 | ||||
|
投稿日時: 2006-02-27 14:21
Aへ行くのであればnullになっていないと思います。
とりあえず、catchブロックで実行時の接続文字列と 例外のスタックトレース(ex.StackTrace)を 出力してみてください。 | ||||
|
投稿日時: 2006-02-27 14:48
前半と後半とで「ですが」にはならないような気がします。 これだったら、開発環境からの Release ビルド (== デバッグ情報を含まない)、 Debug ビルド (== デバッグ情報を含む) したアセンブリで、サイト発行から検証も必要になると思います。 デバッグ情報がなくても、スタック トレースは取得できるんでしたっけ? > vincent さん _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-27 15:46
アドバイスありがとうございます。
出力してみたのですが ------------------------ 文字列▼▼ Data Source=****;User ID=****;Password=****; ▲▲ StackTrace▼▼ 場所 Oracle.DataAccess.Client.OracleException.HandleErrorHelper(Int32 errCode, OracleConnection conn, IntPtr opsErrCtx, OpoSqlValCtx* pOpoSqlValCtx, Object src, String procedure) 場所 Oracle.DataAccess.Client.OracleConnection.Open() ▲▲ でした。 Debugモードでは正常に動いている(ようにみえる)ので、 接続文字列等は問題なさそうです。 ログには表示されていました。 上記、OracleExceptionにて取得・表示した結果です。 OracleExceptionのNumberや他の情報から、 ORA-*****の取得を試みていたのですが、 とることができませんでした。 WEB上でも「OracleException.HandleErrorHelper」にて検索をしたのですが、 なかなか有益な情報を得ることができませんでした。 | ||||
|
投稿日時: 2006-02-27 16:25
System.Exception でキャッチしているからです。 OracleException でキャッチしてあげてください。 キャストすればいけるかな・・・ | ||||
|
投稿日時: 2006-02-27 16:26
throwされているExceptionのTypeがOracleExceptionであることはわかりましたので、
プロパティの値を取得しようと試みたのですが、 どうも値が入ってなさそうです。 Number[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 DataSource[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 Message[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 Procedure[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 Source[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 Errors.Count[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。 各値ともToString()を試みた結果、例外がthrowされました。 StackTraceしか上手に取得できませんでした。(;_;) | ||||
|
投稿日時: 2006-02-27 16:36
かるあさん<
すいません。私が記述している間に返答いただきました。 返答のお礼がない文章になってしまい、すいません。 | ||||
|
投稿日時: 2006-02-27 18:33
ORA-xxxxxのメッセージは通常、Messageプロパティに入りますが
そこがnullになってるっぽいのは気になりますね。 あと、おもいっきり後付け情報になってしまいましたが…
スタックトレース自体はデバッグに関係ない情報なので デバッグモードでなくても普通に取得できます。 ただし、エラーとソースの対応付けはデバッグ情報(pdbファイル)に 含まれるので、具体的なエラー発生位置を知るには デバッグモードでビルドしてデバッグ情報を生成する必要があります。 |