C# 返回重定向函数后会话变量丢失

C# 返回重定向函数后会话变量丢失,c#,asp.net-mvc,mvvm,session-variables,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Mvvm,Session Variables,Asp.net Mvc Viewmodel,我有一个用于排序值的mvvm web应用程序 用户单击sort,元素中的以下代码将其作为参数发送给控制器,刷新页面 这是在控制器中工作的函数 Public ActionResult Sort(ViewModelListSorterValue sorter) { ViewModelListSort sortViewModel = new ViewModelListSort(); sortViewModel.Value = sorte

我有一个用于排序值的mvvm web应用程序 用户单击sort,元素中的以下代码将其作为参数发送给控制器,刷新页面

这是在控制器中工作的函数

Public ActionResult Sort(ViewModelListSorterValue sorter)
        {
            ViewModelListSort sortViewModel = new ViewModelListSort();
            sortViewModel.Value = sorter;
            HttpContext.Session["key"] = sortViewModel;

            return RedirectToAction("List");
        }
代码应该通过使用同一控制器中的另一个函数从每个页面的会话中获取分类器的值来加载分类器的值,该函数也通过
href
标记和以下行调用

sortViewModel= HttpContext.Session["key"] as ViewModelListSort;
第一个页面加载良好,但是当我将其更改为第二个页面时,会话的变量显示为null,排序变为默认值

在firefox的前几页代码运行良好,但在MicrosoftEdge、explorer和GoogleChrome中我运气不佳


我尝试了return
redirectoaction(“List”,false)也是,但没有用。我做错了什么?

显然,我将工作进程的最大数量设置为10个,工作进程无法在它们之间交换包括会话在内的信息,并且我的web应用程序使用
idproc
等。。在应用程序池的设置中将参数设置为1解决了此问题。

这是在IIS应用程序池中设置多个工作进程的问题

多个进程是相互隔离运行的进程,默认情况下会导致会话状态共享问题。我们可以配置在进程外存储会话状态,以便共享,但这是另一回事

关于工作进程的数量,这是一种折衷,应该根据每个应用程序进行调整


通常,作为多个工作进程运行的主要好处是故障隔离,因此如果一个进程出现故障,应用程序仍然能够运行。它也是阻止代码的一个快速解决方案,这样您仍然可以在应用程序中实现更高级别的并发性,但由于进程/线程之间进行了更多的上下文切换,导致性能降低。

我假设您的应用程序是在IIS中托管的。是否启用多个工作进程
ViewModelListSort
不是
ViewModelListSearch
对不起,我的错,编辑为sortviewmodel@KhanhTO是的,它托管在IIS上,我有10个不同的工作进程,属于同一个池,具有不同的端口,我在
ìnetsrv
directory@EvsizTospaa:请将工作进程数设置为1,然后查看问题是否仍然存在,然后我们可以进一步讨论