HttpContext.Current.Session在MVC中给出了空异常

时间:2018-08-21 16:12:15

标签: asp.net-mvc-4 session httpsession

我的MVC4项目中,我正在使用HttpContext.Current.Session [“ Orgs”],并且为了负载平衡应用程序已部署在两台服务器中,因此该会话存储在SQL Server(allowCustomSqlDatabase)中,有时我得到的是null HttpContext.Current.Session中的异常以及页面刷新/返回错误之后,该异常将消失。 如果将同一应用程序部署在单个服务器中,则HttpContext.Current.Session不会出现任何异常。

我发现解决方案很少,但在那种情况下,会话状态为inproc,谁能帮助我解决此问题。

MVC代码:

  public static List<UserOrgViewModel> GetUserOrgs()
    {
        try
        {
            if (HttpContext.Current != null)
            {
                if (HttpContext.Current.Session != null && HttpContext.Current.Session["Roles_Permissions_Routes"] != null && HttpContext.Current.Session["Orgs"] != null)
                {
                    return (List<UserOrgViewModel>)HttpContext.Current.Session["Orgs"];
                }
            }
        }
        catch (Exception ex)
        {

            throw ex;
        }


        return null;
    }

查看:

   @{
                    var orgsl = new List<SelectListItem>();
                    orgsl.Add(new SelectListItem() { Text = "Select Organization", Value = "" });
                    var userOrgs = ViewMethods.GetUserOrgs();
                    if (userOrgs != null && userOrgs.Count > 0)
                    {
                        orgsl.AddRange(userOrgs.Select(o => new SelectListItem() { Text = o.OrgName, Value = o.AppId.ToString() }).ToList());
                    }
                    var selected = (this.ViewContext.HttpContext.Session["Org_Selected"] != null) ? this.ViewContext.HttpContext.Session["Org_Selected"].ToString() : "";
                }
                <div style="min-width:285px;">
                    <select id="OrgId" style="display:none;" onchange="OrgSelectionChanged(this);">
                        @foreach (var item in orgsl)
                        {
                            <option class="Example" value=@item.Value>@item.Text</option>

                        }
                    </select>
                </div>

Web.config:

 <sessionState allowCustomSqlDatabase="true" sqlCommandTimeout="1200" sqlConnectionString="Server=*****;Database=****;Integrated Security=true" timeout="120" />

注意:此问题不是在特定情况下随机出现的。

0 个答案:

没有答案