2009-05-14 18 views
5

Global.asaxを使用して、各要求の最後にApplication_EndRequestイベントを介してログを記録しています。しかし、HTTPContext.Current.Itemsコレクションに格納されている特定の値の異常な動作が見られています。以下はnull可能な列挙型の奇妙な動作

はNULL列挙型のデバッグ出力です。あなたは値があることがわかりますが、HasValueはFalseに解決されましたか?

{System.Nullable(Of AreaNameEnum)} 
    HasValue: False 
    hasValue: False 
    Value: {System.InvalidOperationException} 
    value: ADMIN {0} 

私はそれがHTTPContext.Currentにアクセスするには遅すぎるリクエストのライフサイクルであることを推測しています - しかし、それは時々動作しているようですし、時にはません。誰が何が起こっているか正確に何か光を当てることができますか?

おかげ

答えて

4

NULL可能ブールhasValueは、Tが値型であるT値を含む構造体です。この場合、列挙型です。 enumはこの場合デフォルト値の0を持つ必要がありますが、public値はhasValueがfalseなので例外をスローします。あなたが見ている何

はNULL可能で、それが何をするかどうするかの内部です。 hasValueがfalseの場合、値を持つ内部値フィールドには何も読み込むことはできません。結局、値にnullが含まれていれば、ここでNullableを使用することには何の意味もありません。

+0

はい、それは今、私はそれについて考える意味があります。私はHTTPContextのものは赤ちゃんだったと思います。ありがとう。 – James