在我没有遇到这个问题之前,我将我的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:
答案 0 :(得分:0)
问题显然是你改变了你工作的环境。我不确定Windows的版本是否应该受到责备,根据您提供的信息,我不清楚。所以,首先要做的事情是:
行
ViewState[AntiXsrfTokenKey] = Page.ViewStateUserKey;
已成功执行,因此很明显ViewState
已存在且AntiXsrfTokenKey
也已定义。你的问题在
ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;
因此,AntiXsrfUserNameKey
可能是null
或Context
可能是null
或Context.User
可能为空或Context.User.Identity
可能是{{1} }}。您可以通过正确检查所有不是null
的内容来确保您所获得的错误不再存在,但根据问题的严重性,这可能不足以解决问题。你需要找出我给出的候选人实际上是null
,你需要找出原因。它可能来自您的AppFile.config,或web.config或您的项目与您正在使用的ASP.NET版本的兼容性,或来自IIS,因此错误可能来自多个可能的来源。