- - PR -
[ASP.NET] GC.Collectの多用
投稿者 | 投稿内容 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-07-27 15:32
だめだこりゃPart3
| ||||||||||||||||
|
投稿日時: 2006-07-27 15:45
運用時というか開発時かな。 遅延バインディングが必要ないなら、切っとくべきでしたね。まぁ今更遅いので置いときましょう(全部修正していける余力があるのなら別ですが)。 oo4oは全く知らないので何ともわかりませんが。 遅延バインディングの箇所で例外が発生しているようなので、やはり、かるあさんが仰っているように
で、Application("OraSession") が null 参照のタイミングがあるのでしょう。(どうです?みなさん) lOraDatabase にインスタンスを割り当ててないように見えますが、それはコードが隠れているだけでしょうか。まぁここは今は関係ないですね。 _________________ 囚人@わんくま同盟 囚人のジレンマな日々 [ メッセージ編集済み 編集者: 囚人 編集日時 2006-07-27 15:46 ] | ||||||||||||||||
|
投稿日時: 2006-07-27 15:54
原因が分からないようでしたらとりあえずこれで様子を見てはどうでしょう。 自分自身(この場合LoginPage)が全管理できない場所からのダウンキャストは必ずチェックしないといけませんよ。 必ず入っているという保証はないのですから。 _________________ 囚人のジレンマな日々 | ||||||||||||||||
|
投稿日時: 2006-07-27 17:15
私もoo4oに関しては知りませんが、少なくとも出てきた処理でこれはないでしょう。 ※チェックを入れてみること自体にはもちろん反対しませんが。 っていうかApplication_Startイベントがきちんとただ一回、 最初のリクエストでのみ、他のリクエストの処理開始前に実行完了する なんてことが保証されてなかったらびっくりしますが… | ||||||||||||||||
|
投稿日時: 2006-07-27 19:52
あれ?そうでしたか。 例外時のスタックトレースが遅延バインディング絡みで、出てきたコードで遅延バインディング絡みはここぐらいかなと思ったのですが。 「これはないでしょう」の理由を聞かせももらえますか? _________________ 囚人のジレンマな日々 | ||||||||||||||||
|
投稿日時: 2006-07-27 20:03
ココがそうかは解りませんが、 Application_Start は最初に一回しか実行されないとしても、 Application("OraSession")が NULL にならない理由にはなりませんよね。 #シングルトンあたりでやってあげたほうが良かったのかな #うぅ、すみません、投稿する前にしっかり見直さないから修正が多くなる。。。 [ メッセージ編集済み 編集者: かるあ 編集日時 2006-07-27 20:05 ] | ||||||||||||||||
|
投稿日時: 2006-07-27 20:11
どういう状況を想定していますか? Application変数がNullになる可能性としては、 1.Application_Startの初期化処理自体で失敗 2.誰かが勝手に消した 辺りが考えられますが、まず、エラーが散発的に発生しているということから、 根本的な初期化失敗ではないと思われるのでおそらく1.ではないでしょう。 また、2.の可能性は確かにないとはいえないので、NULLチェックをとりあえず 入れてみることには反対していません。 ただし、なんんとなく「Application("OraSession")がNULL」ではないんじゃない かなとは思っています。 また、かるあさんは、 「Application("OraSession").CreateDatabasePool() が同時に複数から呼び出されたら どうなるのかなーと思いました。」 とおっしゃっているので、複数同時に呼び出されたからNULLというのは あてはまらないだろう、という意図もありました。 --追記 >とおっしゃっているので、複数同時に呼び出されたからNULLというのは >あてはまらないだろう、という意図もありました。 これは、複数同時に呼び出されるということがそもそもありえないだろう、 ということです。 --さらに追記 すみません、結局もともといいたかったことというのは、 Application_Startが複数同時に呼び出されるとか、 Application_Startが正しく実行されない可能性がある(ユーザコードが 原因ではない状況で)、などと言っているように見えたので、 そんなことはないんでは?といいたかったわけです。 ※本来疑わなくていい「部分あるいは状況」を疑ってても仕方がないのと、 間違った認識が派生していきそうだったからです。 [ メッセージ編集済み 編集者: なちゃ 編集日時 2006-07-27 20:19 ] | ||||||||||||||||
|
投稿日時: 2006-07-27 20:45
そうですね、僕も示されたコードであるとすれば2の 誰かが勝手に消した が可能性としてありえるかな、と思って書きました。
すいません、言葉が足りていませんでした。 Application("OraSession")が NULL かどうかは別として、 複数から同時アクセスされるようなオブジェクトに対して、 内部の情報が書き換わりそうなメソッドをいきなり呼び出しても大丈夫なのかな? と思い書きました。
そうですか?複数人が同時に検索使用とした場合 ありえそうに思えるんですけれど・・・
そうですね、僕もそう思います。 もう少し詳細なコードと状況がほしいですね。 |