我注意到User.Identity.Name
似乎在没有用户身份验证时返回空字符串,而不是抛出空引用异常。
假设User.Identity.Name
永远不会抛出是有效的吗?或者我应该在访问之前检查null Identity
。
答案 0 :(得分:1)
我相信如果你没有调用
,User对象可以为nullFormsAuthentication.SetAuthCookie(UserName, False)
或
FormsAuthentication.RedirectFromLoginPage(UserName, False)
最好包装一个try catch。
答案 1 :(得分:0)
User.Identity
中没有User
, HttpContext
将抛出空引用异常。虽然User
为Identity
,但不是{{1}}。所以是的,你应该以某种方式检查或处理null。
答案 2 :(得分:0)
虽然Name
是一个字符串,Identity
和User
是对象,但任何对象都可以为null。
因此,总是有机会抛出异常,作为生产应用程序,你最好通过try / catch包装它,并检查Name为null 。
答案 3 :(得分:0)
Name
是一个属性,而不是一个方法,因此它的“getter”位极不可能抛出异常,因为它是一个Microsoft类,并且他们的framework design guidelines明确警告不要抛出来自getters的例外。虽然这个规则可能有例外......
此外,我通常使用元数据作为指导,如果方法抛出任何异常(对于.Net框架类)。在Visual Studio中使用F12(如果没有安装Reflector或类似的东西)将显示元数据。在方法上方的注释块中,它通常会为您提供该方法可能引发的确切异常类型。