升级Win10后Site.master出现未处理的NullReferenceException求助
解决ASP.NET Site.master中的NullReferenceException问题
你遇到的这个空引用异常,大概率是因为Context.User或者Context.User.Identity对象为null导致的——毕竟在用户未完成身份验证的阶段,这两个对象可能还没被初始化。下面是几个针对性的解决方法:
先做Null判断再安全赋值
直接访问null对象的属性会触发异常,所以可以先对Context.User和Identity进行null检查,再完成赋值:string userName = string.Empty; if (Context.User != null && Context.User.Identity != null) { userName = Context.User.Identity.Name ?? string.Empty; } ViewState[AntiXsrfUserNameKey] = userName;确认AntiXsrfUserNameKey常量已正确定义
检查Site.master的代码中,是否已经正确声明了AntiXsrfUserNameKey这个常量,比如:private const string AntiXsrfUserNameKey = "AntiXsrfUserName";如果这个常量未定义或者为null,也会间接导致赋值时出现问题。
调整代码执行的事件时机
Page_PreLoad事件触发时,用户身份验证流程可能还没完成,你可以尝试把这段代码移到Page_Load事件中执行;另外也要确认web.config中的身份验证配置是否正确:
比如Forms认证的配置:<authentication mode="Forms"> <forms loginUrl="~/Account/Login.aspx" timeout="2880" /> </authentication>如果用的是Windows认证,要确保IIS站点的Windows身份验证功能已经启用。
清理并重新生成项目
升级系统和开发环境后,项目的临时编译文件可能出现异常,右键解决方案选择「清理」,然后重新生成整个解决方案,再运行项目试试。
内容的提问来源于stack exchange,提问作者Mohammad
相关产品推荐
相关产品推荐

