1

我不确定我是否以正确的方式处理这个问题,但由于我遇到了问题,我想我不是。

加载登录屏幕时,我必须发送一个公司 ID。

看起来像这样:

public ActionResult LogOn(string id)
{
  var sb = new StringBuilder();
  sb.AppendLine(string.Format("CorpID: {0}", id));

  if(ViewBag.CorpID != null)
    sb.AppendLine(string.Format("ViewBag.CorpID: {0}", ViewBag.CorpID));

  Guid corpIdGuid;
  if (!Guid.TryParse(id, out corpIdGuid) && string.IsNullOrEmpty(ViewBag.CorpID))
    return null;

  // the id passed in will take presidence over the 
  // viewbag unless it is blank then we use viewbag
  // one way or the other viewbag.corpid should not
  // be blank
  if(!string.IsNullOrEmpty(id))
    ViewBag.CorpID = id;

  // Session["CorpId"] = id;
  //Not a junk guid.. continue.
  return View();
}

我需要这个来确定我们将在本次会议期间与哪家公司合作。

我遇到的问题是,当 cookie 超时发生时,设置为 10 分钟,它将它们引导回此登录,我不再有 corpid。

我试过了viewbag,它正在被重置。

我尝试了一个cookie,但由于它过期,数据不再存在。

我尝试了一个配置文件管理器,但由于他们记录了它,这让我一无所获。

CorpId当用户超时并重新回到登录屏幕时,我该如何维护?我也需要为每个屏幕提供此信息。

任何投入将不胜感激!

4

1 回答 1

2

您需要创建一个单独的 cookie,用于标识不会随用户会话过期的公司 ID 。Session["CorpId"]将随着用户会话过期并且无法工作。

var corpCookie = new HttpCookie("CorpID", id);
corpCookie.Expires = DateTime.Now.AddDays(30.0);
HttpContext.Current.Response.Cookies.Set(corpCookie);

每次用户登录时,您都可以更新到期时间以使其成为滑动到期时间。要检索 cookie 值,请使用以下命令:

var corpID = HttpContext.Current.Request.Cookies.Get("CorpID").Value;
于 2012-09-10T15:33:40.123 回答