3

User.Identity.Namenull参照例外をスローするのではなく、認証されたユーザーがいない場合に空の文字列を返すように見えることに気付きました。

User.Identity.Name決して投げないことを仮定することは有効ですか?または、アクセスする前にnullをチェックする必要がありIdentityます。

4

4 に答える 4

1

呼び出していない場合、Userオブジェクトはnullになる可能性があると思います

FormsAuthentication.SetAuthCookie(UserName, False)

また

FormsAuthentication.RedirectFromLoginPage(UserName, False)

トライキャッチでラップするのがおそらく最善でしょう。

于 2012-09-13T14:04:56.707 に答える
0

User.IdentityUser現在のに存在しない場合、null参照例外をスローしますHttpContext。それUserはnullですが、ではありませんIdentity。そうです、何らかの方法でnullをチェックまたは処理する必要があります。

于 2012-09-13T14:29:04.600 に答える
0

Nameは文字列でIdentityあり、オブジェクトですが、他のオブジェクトと同様に、それUserは確かにnullになる可能性があります。したがって、例外がスローされる可能性は常にあります。本番アプリケーションとしては、try / catchでラップし、Nameのnullを確認することをお勧めします。

于 2012-09-13T14:32:48.700 に答える
0

Nameはメソッドではなくプロパティであるため、Microsoftクラスであるため、その「ゲッター」ビットが例外をスローする可能性はほとんどありません。フレームワークの設計ガイドラインでは、ゲッターからの例外のスローに対して明示的に警告しています。おそらくどこかでこのルールに例外がありますが...

また、私は通常、メタデータを、メソッドによって例外がスローされた場合のガイドとして使用します(.Net Frameworkクラスの場合)。Visual StudioでF12キーを押すと(Reflectorなどがインストールされていない場合)、メタデータが表示されます。メソッドの上のコメントブロックでは、通常、メソッドがスローする可能性のある例外の正確なタイプが示されます。

于 2012-09-13T14:44:40.697 に答える