site.master中的用户代码未处理null引用异常

时间:2018-05-16 09:23:41

标签: asp.net exception nullreferenceexception

在我没有遇到这个问题之前,我将我的Windows从7更新到10,然后安装了sql server 2012和vs 2012。 现在我打开我的项目,并在site.master中看到此错误消息。 我怎么能解决这个问题? 谢谢

  protected void master_Page_PreLoad(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // Set Anti-XSRF token
        ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey;
        ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;
    }
    else
    {
        // Validate the Anti-XSRF token
        if ((string)ViewState[AntiXsrfTokenKey] != _antiXsrfTokenValue
            || (string)ViewState[AntiXsrfUserNameKey] != (Context.User.Identity.Name ?? String.Empty))
        {
            throw new InvalidOperationException("Validation of Anti-XSRF token failed.");
        }
    }
}

我在这一行看到错误:

 ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;

这是例外情况:

System.NullReferenceException was unhandled by user code
  HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=App_Web_iq1yfyyi
  StackTrace:
       at Site.master_Page_PreLoad(Object sender, EventArgs e) in e:\Asp.Net projects\Basije daneshgah marvdasht\Site.master.cs:line 56
       at System.EventHandler.Invoke(Object sender, EventArgs e)
       at System.Web.UI.Page.OnPreLoad(EventArgs e)
       at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
  InnerException:

1 个答案:

答案 0 :(得分:0)

问题显然是你改变了你工作的环境。我不确定Windows的版本是否应该受到责备,根据您提供的信息,我不清楚。所以,首先要做的事情是:

ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey;

已成功执行,因此很明显ViewState已存在且AntiXsrfTokenKey也已定义。你的问题在

ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;

因此,AntiXsrfUserNameKey可能是nullContext可能是nullContext.User可能为空或Context.User.Identity可能是{{1} }}。您可以通过正确检查所有不是null的内容来确保您所获得的错误不再存在,但根据问题的严重性,这可能不足以解决问题。你需要找出我给出的候选人实际上是null,你需要找出原因。它可能来自您的AppFile.config,或web.config或您的项目与您正在使用的ASP.NET版本的兼容性,或来自IIS,因此错误可能来自多个可能的来源。