首先,抱歉我的英语不好。
我使用asp net mvc遇到了一个奇怪的问题。 我有简单的控制器,可以执行2个操作。第一次操作是连续的,可能需要几分钟。而另一个是短暂的,并执行了几秒钟。 像这样:
public class TestController : Controler {
[HttpPost]
public string Func1(long id) {
// continuous operation
return new ValueGetter().Get(id)
}
[HttpPost]
public string Func2(long id) {
return "Abc";
}
}
从客户端我通过jqueries post调用thouse方法:
$.post(url).sucess(...);
问题在于下一个:执行第一个操作时,第二个操作将等待,直到第一个操作完成。 我尝试使用AsyncController,如http://msdn.microsoft.com/en-us/library/ee728598.aspx所述,但结果是相同的......
我在global.asax中记录了一些应用程序事件:
protected void Application_PostMapRequestHandler(object sender, EventArgs e) {
LoggerManager.Info("PostMapRequestHandler fired in global.asax");
}
protected void Application_AcquireRequestState(object sender, EventArgs e) {
LoggerManager.Info("AcquireRequestState fired in global.asax");
}
如果我例如调用第一个方法一次,然后立即调用第二个方法三次,我在日志文件中得到以下结果:
1.PostMapRequestHandler
2.AcquireRequestState
3.PostMapRequestHandler
4.PostMapRequestHandler
5.PostMapRequestHandler
... after first method is executed sucessfuly
6.AcquireRequestState
7.AcquireRequestState
8.AcquireRequestState
我使用IIS 7(不是快递)和asp.net mvc 3
为什么会发生以及如何解决?
答案 0 :(得分:1)