c# - MVC session 变量在 Localhost 上工作但不在实时服务器上工作?

标签 c# asp.net asp.net-mvc session session-variables

在我的 MVC5 应用程序中,我有一个数据网格,它在 URL 中指定了过滤/排序标准。当用户选择要编辑/创建/删除的记录时,我需要保存 URL 值,以便在 Controller POST 操作完成时,它们将返回到与触发 GET 操作之前完全相同的布局(相同的数据-应用排序/过滤标准的网格)。

为了追求这种功能,我开始在 Controller 中使用 session 变量。在 GET 上:

Session["returnURL"] = Request.UrlReferrer.AbsoluteUri;

我将 session 变量设置为 returnURL到我浏览器的当前完整路径 URL。在帖子中,保存对记录/数据库的更改后,我检查了 returnURL变量为 null 并执行 Redirect() :

var returnURL = (Session["returnURL"] != null) ? Session["returnURL"].ToString() : Url.Action("Index", "Home");
return Redirect(returnURL);

这一切在我的 localhost 上工作得很好,但是当我每次尝试导航到我的记录的编辑/创建/删除操作时将它发布到我的服务器时,GET 操作上的 session 变量会导致:

“/”应用程序中的服务器错误。 你调用的对象是空的。 说明:在执行当前 Web 请求期间发生未处理的异常。 异常详细信息:System.NullReferenceException:未将对象引用设置为对象的实例。 源错误:[没有相关的源行]

经过大量试验和错误后,我诊断出是我的 session 变量导致了这个 NullReferenceException当我从 GET 中删除该特定代码行时action 方法,其他一切正常,适当的 View 加载。

有人可以帮忙吗?我不知道为什么我的 session 变量在我的本地主机上工作而不在我的服务器上工作。我查看了以下 MSDN 文章 https://msdn.microsoft.com/en-us/library/h6bb9cz9(v=vs.71).aspx , 但即使使用 <configuration><system.web> <sessionState mode="InProc"></sessionState>... 我仍然得到相同的结果在我的 Web.Config 中指定.


编辑:

在 ps2goat 的建议下,我修改了我的 Web.Config包括:

<system.web>
      <sessionState mode="InProc"></sessionState>
      // ....
      <pages enableSessionState="true">
        <namespaces>
          <add namespace="GridMvc" />
          <add namespace="MvcSiteMapProvider.Web.Html" />
          <add namespace="MvcSiteMapProvider.Web.Html.Models" />
        </namespaces>
      </pages>
      // ....
 </system.web>

仍然收到相同的 NullReferenceException错误...?我现在指定了 sessionState = InProc并设置 <pages enableSessionState="true"> .

最佳答案

我在这篇文章 ( The Session object is null in ASP.NET MVC 4 webapplication once deployed to IIS 7 (W 2008 R2) ) 中找到了答案,其中我修改了我的 <modules>部分做 add/remove以下指定值:

  <configuration>
  ...
  <system.webServer>
    ...
    <modules>
      <remove name="Session" />
      <add name="Session" type="System.Web.SessionState.SessionStateModule"/>
      ...
    </modules>
  </system.webServer>
</configuration>

我仍然不完全确定为什么这是答案,但在这种情况下它对我的问题有效。

关于c# - MVC session 变量在 Localhost 上工作但不在实时服务器上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31658369/

相关文章:

c# - 检查用户是否登录Skype

.net - 检测asp.net将用户重定向到登录页面

jquery - 如何在 MVC 中使用 jquery 将 CSS 类添加到密码字段?

asp.net-mvc - ASP.NET MVC JsonResult 和 Handlebars ,没有抓地力?

asp.net - 浏览器的缓存是否考虑了 URL 中的参数? (ASPX 页面)

asp.net-mvc - 使用 EF5 代码优先迁移将种子数据放置在何处

c# - sqlite 添加 x 天至今(x 存储在表中)

c# - 如何使用反射通过其属性值之一获取属性名称或如何获取当前正在验证的数据属性的属性信息?

c# - byte[] 到 BitmapImage 转换失败

ASP.NET : How to call a Master page event handler from Content page event handler?