首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >asp.net mvc 2多线程

asp.net mvc 2多线程
EN

Stack Overflow用户
提问于 2010-05-20 02:58:18
回答 1查看 420关注 0票数 0

我在asp.net MVC2中遇到了一些奇怪的行为(至少这不是我所期望的)。我有一个处理信用卡的控制器httppost操作。我在服务器上设置了一个会话变量,让我知道用户是否试图处理卡。完成后,我会清除该会话变量。我正在做一些非常快速的posts来测试这个过程,会话变量每次都返回null,因为我在过程结束时清除了会话变量。我有一些调试打印,它们告诉我所有请求都是同步处理的。is...the第一次尝试发生,它失败,会话变量被清除,第二次尝试失败,变量被清除,等等。我的第一个想法是,这是调试的一个副作用,它只是为了调试目的而使用本地was服务器排列请求。所以我把它放在一个开发服务器上,同样的事情也在发生。同步处理多个提交/发布。我甚至在其中放了一个System.Threading.Sleep,以确保它会在我设置会话变量后立即停止,并且在第一个请求完成之前,它甚至不会启动第二个请求。

还有没有人见过这种行为?我的理解是,每个请求都会产生一个工作进程,并且这些操作可以同步发生。

下面是一些psuedo代码

代码语言:javascript
复制
if (Session["CardCharged"] != null)
    return RedirectToAction("Index", "Problem");
Session["CardCharged"] = false; //starting the process
System.Threading.Thread.Sleep(10000);
//charge card here

if (!providerResponse.IsApproved)
{
    System.Diagnostics.Debug.WriteLine("failed");
    Session["CardCharged"] = null; //have to allow them to charge again since this failed
    return View(myModel);
}

Session["CardCharged"] = true;
return RedirectToAction("Index", "OrderComplete");

我应该提到的是,我的代码总是不能通过信用卡检查来进行测试。我正在尝试测试仍在进行处理的情况,并将用户重定向到其他地方。我在别处设置了一个虚拟会话变量,以确保会话id“保持”。因此,我知道每个请求的会话id是相同的。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-20 11:33:24

这是浏览器一次只发送一个POST请求并将其他请求排入队列的限制。这不是web服务器的限制。

模拟多个请求的一种方法是使用tinyget之类的工具,该工具是IIS6.0工具包的一部分。对于您的测试,您将需要使用多线程选项。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2868508

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档