关于c#:. NET在加载到服务器上时调试webform中的会话内容

.NET debug what's in a session within a webform when loaded onto a server

我目前正在研究一系列的WebForms,当按正确的顺序单击时,信息会存储到会话中。如果用户直接访问此页面,我希望将其重定向回第一个Web表单页面。我可以得到这个

当我在我的机器上本地运行这段代码时,会话为空,if/else语句工作,重定向到default.aspx。但是,当我将文件加载到服务器并从网页运行时,我会得到一个Object reference not set to an instance of an object.错误。

1
2
3
4
5
6
7
8
9
10
11
protected void Page_Load(object sender, EventArgs e)
{
    if (Session != null && Session["ReasonForAdminRights"] != null)
    {
         ll.Text = Session["ReasonForAdminRights"].ToString();
    }
    else
    {
         Response.Redirect("~/default.aspx");
    }
}

我尝试过很多不走运的变种,包括:

1
2
3
4
 if (!string.IsNullOrEmpty(Session["ReasonForAdminRights"] as string))
{
     ll.Text = ((string)Session["ReasonForAdminRights"]);
}

1
if (Session["ReasonForAdminRights"] != null)

我做了一些谷歌搜索,StackOverflow上的答案告诉我会话对象设置不正确。但是我一直在研究如何在服务器上进一步调试它?我不知道如何找出其中的实际内容,因为它应该为空,所以应该始终转到else语句。

任何帮助都将不胜感激!我有点不知所措!

回答:

"对象引用未设置为对象实例"是什么意思?

什么是NullReferenceException,如何修复它?

对象引用未设置为对象的实例。

编辑堆栈跟踪:

1
2
3
4
5
[NullReferenceException: Object reference not set to an instance of an object.]
   ServiceDeskHelpForms.user_details_collection.Page_Load(Object sender, EventArgs e) in \\homes\My Documents\Visual Studio 2015\Projects\SDHelpForms\SDHelpForms\user-details-collection.aspx.cs:24
   System.Web.UI.Control.OnLoad(EventArgs e) +108
   System.Web.UI.Control.LoadRecursive() +67
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)

+ 4497


注:答案基于问题的通信跟踪

该问题可能是由服务器上的安装中断引起的。服务器上的完全擦除+重新部署可能会解决此问题。


1
2
3
4
5
var sessionValue= (string)(Session["ReasonForAdminRights"]);
if(!string.IsNullOrEmpty(sessionValue))
{
//do something...
}