gpt4 book ai didi

asp.net-mvc - 使用 Session 进行 Asp.net MVC3 长轮询

转载 作者:行者123 更新时间:2023-12-01 05:30:00 26 4
gpt4 key购买 nike

我尝试在我的 MVC3 应用程序中实现长轮询。

长轮询使用以下代码可以正常工作:当线程休眠时,我可以毫无问题地重新加载页面。

[AsyncTimeout(30 * 1002)]
public void TestAsync()
{
AsyncManager.OutstandingOperations.Increment();

var queued = ThreadPool.QueueUserWorkItem(new WaitCallback(parm =>
{
var wait = new AutoResetEvent(false);
wait.WaitOne(TimeSpan.FromSeconds(30));

AsyncManager.OutstandingOperations.Decrement();
}));
}
//--------------------------------------------------------------------------------

public ActionResult TestCompleted()
{
return Json(null);
}
//--------------------------------------------------------------------------------

但是,如果我在应用程序中使用 session ,例如 ..
this.Session["XXX"] = "Test";

当线程正在运行时,我无法重新加载页面。页面等待直到线程准备好,然后页面将刷新。

我怎么解决这个问题?

最佳答案

这不是您问题的解决方案,但可能会有所帮助。

在 MVC 中,您不能为单个用户 session 同时执行多个请求。获得真正异步请求的唯一方法是使 Controller 成为 SessionLess Controller ,但是当然您无法读取或写入 session 。

我在执行异步 AJAX 请求时遇到了这个问题。我想通过设置 SessionStateBehaviourReadOnly我至少可以对 session 进行只读访问,因为不会有并发问题,但这也不起作用。

这篇文章有更多信息http://weblogs.asp.net/imranbaloch/archive/2011/05/10/asynccontroller-v-s-sessionless-controller.aspx

关于asp.net-mvc - 使用 Session 进行 Asp.net MVC3 长轮询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11795540/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com