.NET debug what's in a session within a webform when loaded onto a server
我目前正在研究一系列的WebForms,当按正确的顺序单击时,信息会存储到会话中。如果用户直接访问此页面,我希望将其重定向回第一个Web表单页面。我可以得到这个
当我在我的机器上本地运行这段代码时,会话为空,if/else语句工作,重定向到default.aspx。但是,当我将文件加载到服务器并从网页运行时,我会得到一个
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... } |