Viewstate 有值但 return System.NullReferenceException 回传

Viewstate has value but return System.NullReferenceException on postback

我最近在 post 返回页上遇到了一个新的非常奇怪的 ViewState 异常。 如果页面未 post 返回(第一次加载),我想设置一次 ViewState,然后在下一次 post 返回时再次使用它。
代码在page_Load上定义如下:

if (!string.IsNullOrEmpty(Request.QueryString["id"])){
   if (Guid.TryParse(Request.QueryString["id"], out var id)){
      ViewState["mesId"] = id;
      if (!IsPostBack)
       {
          LoadData(id);
       }
       if (IsPostBack)
       {
           if (Request.Form["btnSend"] != null)
           {
               if (ViewState["mesId"] != null)
               {
                  string g = ViewState["msgId"].ToString();
                  if (Xss.GUID_Validate(g))
                  {
                       Guid mesGuid = Guid.Parse(ViewState["mesId"].ToString());
                       Send_Message(mesGuid);
                  }
               }
           }
        }
   }
}


页面加载后没有 post 返回,一切正常,但如果我调用 btnSend 执行 post 返回,ViewState["mesId"] 保持它的值并且是脏的但抛出 null 和 Object reference not set to an instance of an object.


我可以通过使用直接 Request.QueryString 来解决这个错误,但我想知道我的代码有什么问题以及为什么视图状态会这样?

您似乎正在设置和检查 ViewState["mesId"],但在加载 ViewState["msgId"] 时崩溃了。

检查密钥是否符合您的预期 - 这可能只是一个拼写错误。