【问题标题】:Can't create Session in Asp MVC无法在 Asp MVC 中创建会话
【发布时间】:2025-11-30 05:20:02
【问题描述】:

我有一个 ASP.NET MVC 应用程序,它发布在 2 个 IIS Web 服务器上(一个用于debug,一个用于release)。

在这个应用程序中,我使用 Session 变量来保持用户登录,但是在 release 服务器中,这个 Session 定义不起作用,返回错误:

对象引用未设置为对象的实例

我相信它只能是 IIS 配置,因为相同的代码在 debug 服务器和 localhost 上都可以正常工作,这就是我无法调试应用程序的原因。

我以前从未进行过 IIS 配置,但在搜索它时,我发现有一个 Sessions State 配置(请参阅此链接 here),默认设置为 true ,如果我尝试设置false,则不会发生任何不同。

代码如下:

// POST: Auth/Login/{login}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(DTOViewModel login)
{
    try
    {
        this.Autenticar(login.Usuario, login.Password);
        Session["user"] = login.Usuario; // <---- Here is the problem
        return Json(new { url = Url.Action("Index", "User/Home") });
    }
    catch (Exception ex)
    {
        return Json(new { erro = ex.Message });
    }
}

【问题讨论】:

  • 那么,您是否根据参考链接更改了 IIS 上的任何设置?
  • 我试过了,但没有任何改变
  • 你确定登录变量有数据吗?

标签: asp.net-mvc session iis


【解决方案1】:

解决方案 1: 检查与应用程序池关联的最大工作进程。应该是 1。

检查最大工作进程的步骤:

  1. 从 IIS 的左侧面板转到应用程序池
  2. 选择与您的网站关联的应用程序池。
  3. 转到该应用程序池的高级设置
  4. 设置进程模型-->“最大工作进程”为1

解决方案 2: 在 web.config 文件中更改以下设置:

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

【讨论】:

  • 您好,感谢您的帮助,我在两个 IIS 服务器上都看到了它,并且“最大工作进程”已经设置为 1。
  • 我已经添加了另一个解决方案,检查它是否适合你?