2

オブジェクト MyObject があり、それをセッションに保存しています。

私はこれを書きます:

MyObject TheObject = HttpContext.Current.Session["TheObjInSession"] as MyObject;

エラーが発生するObject reference not set to an instance of an object理由は? キャストを使用asしていて、キャストでエラーが発生した場合、null が返されて実行が続行されると思いました。この行をどのように書き直せばよいでしょうか?

ご提案いただきありがとうございます。

PS: enable session 行を削除したため、エラーが発生しまし[WebMethod(EnableSession = true)]た。行を元に戻しますが、何か問題が発生した場合に備えて、例外がないことを確認したいと思います。

4

1 に答える 1

4

Sessionそれを引き起こしている可能性があります (存在しないか、確立されていません)。セッションを管理するクラスをマークしていない場合、これはハンドラーで一般的です。

はい、あなたは正しいですas、キャストを試みるか結果が になりnullますが、それはあなたが左側のオブジェクトが有効であり、キャストを試みる値を持っていることを前提としています。

もう少し詳しく説明するには:

HttpContext.Current.Session["Foo"]
HttpContext                         Probably fine
HttpContext.Current                 May not exist
HttpContext.Current.Session         Most likely cause (no access to session)

それ自体が存在しないSession場合、要素からキーを参照することは本質的に不可能になります。Session

于 2012-07-26T17:44:51.110 に答える