我注意到User.Identity.Name
似乎在沒有用戶身份驗證時返回空字符串,而不是拋出空引用異常。User.Identity.Name曾經拋出?
假設User.Identity.Name
永遠不會扔?或者我應該在訪問之前檢查null Identity
。
我注意到User.Identity.Name
似乎在沒有用戶身份驗證時返回空字符串,而不是拋出空引用異常。User.Identity.Name曾經拋出?
假設User.Identity.Name
永遠不會扔?或者我應該在訪問之前檢查null Identity
。
我認爲,用戶對象可以爲空,如果你還沒有叫
FormsAuthentication.SetAuthCookie(UserName, False)
或
FormsAuthentication.RedirectFromLoginPage(UserName, False)
它可能是最好的嘗試捕捉包。
User.Identity
如果在當前的HttpContext
中沒有User
,則會拋出空引用異常。雖然它是User
是空的,而不是Identity
。所以是的,你應該以某種方式檢查或處理null。
雖然Name
是一個字符串,Identity
和User
是對象,當然可以爲空,因爲任何對象都可以。 因此,總是有拋出異常的機會,並且作爲生產應用程序,您更好地使用try/catch包裝它以及檢查Name爲空。
Name
是屬性而不是方法,因此它的「getter」位不太可能拋出異常,因爲它是Microsoft類,並且它們的framework design guidelines明確警告不要從getter拋出異常。雖然這個規則在某處可能是個例外......
此外,我通常使用元數據作爲指導,指出如果通過方法(對於.Net框架類)拋出任何異常。在Visual Studio中打開F12(如果您還沒有安裝Reflector或類似軟件)會顯示元數據。在方法上方的註釋塊中,它通常會給出方法可能拋出的確切類型的異常。
總是檢查!我的大多數應用程序都是具有Windows認證的內部網,所以很容易出錯,因爲這意味着應用程序設置正確 – ggonsalv