- PR -

.NET2005 と Oracle

投稿者投稿内容
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 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サイトだとエラーになってしまいます。

どなたか同じ境遇の方、原因をご存知の方がおられましたら
お知恵をお貸しいただけないでしょうか?

よろしくお願いいたします。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-02-27 14:21
Aへ行くのであればnullになっていないと思います。

とりあえず、catchブロックで実行時の接続文字列と
例外のスタックトレース(ex.StackTrace)を
出力してみてください。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-27 14:48
引用:

WEB初心者さんの書き込み (2006-02-27 13:37) より:

開発時のDebugモードではきちんと動作しているのですが、
Webサイト発行によるWebサイトだとエラーになってしまいます。


前半と後半とで「ですが」にはならないような気がします。
これだったら、開発環境からの Release ビルド (== デバッグ情報を含まない)、
Debug ビルド (== デバッグ情報を含む) したアセンブリで、サイト発行から検証も必要になると思います。

デバッグ情報がなくても、スタック トレースは取得できるんでしたっけ? > vincent さん

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 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」にて検索をしたのですが、
なかなか有益な情報を得ることができませんでした。



かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2006-02-27 16:25
引用:

WEB初心者さんの書き込み (2006-02-27 15:46) より:

上記、OracleExceptionにて取得・表示した結果です。
OracleExceptionのNumberや他の情報から、
ORA-*****の取得を試みていたのですが、
とることができませんでした。


System.Exception でキャッチしているからです。
OracleException でキャッチしてあげてください。
キャストすればいけるかな・・・
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 2006-02-27 16:26
throwされているExceptionのTypeがOracleExceptionであることはわかりましたので、
プロパティの値を取得しようと試みたのですが、
どうも値が入ってなさそうです。

Number[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。
DataSource[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。
Message[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。
Procedure[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。
Source[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。
Errors.Count[失敗]オブジェクト参照がオブジェクト インスタンスに設定されていません。

各値ともToString()を試みた結果、例外がthrowされました。

StackTraceしか上手に取得できませんでした。(;_;)
7年目
常連さん
会議室デビュー日: 2005/04/28
投稿数: 21
投稿日時: 2006-02-27 16:36
かるあさん<

すいません。私が記述している間に返答いただきました。

返答のお礼がない文章になってしまい、すいません。
vincent
大ベテラン
会議室デビュー日: 2004/07/09
投稿数: 142
投稿日時: 2006-02-27 18:33
ORA-xxxxxのメッセージは通常、Messageプロパティに入りますが
そこがnullになってるっぽいのは気になりますね。

あと、おもいっきり後付け情報になってしまいましたが…
引用:

デバッグ情報がなくても、スタック トレースは取得できるんでしたっけ? > vincent さん


スタックトレース自体はデバッグに関係ない情報なので
デバッグモードでなくても普通に取得できます。

ただし、エラーとソースの対応付けはデバッグ情報(pdbファイル)に
含まれるので、具体的なエラー発生位置を知るには
デバッグモードでビルドしてデバッグ情報を生成する必要があります。

スキルアップ/キャリアアップ(JOB@IT)