2011-12-05 126 views
0

我收到了引发长时间业务逻辑(约1秒)的httpRequest。我必须在0.2秒内回答httpSender,否则我会收到第二个httpRequest。如何快速响应httpRequest?

现在我遇到了下一个问题:我在接受httpRequest后给httpResponse,但是Response.End()停止工作。那么,为了达到这个目的:既提供快速响应又提供处理请求?

我看到只在其他线程中创建线程和处理请求,但是恐怕Response.End()也会停止线程。

+0

是否存在需要返回的业务逻辑的结果?如果是这样,如果响应结束,你打算怎么做? –

+0

不,我总是将相同的结果返回给发件人。所以业务逻辑与http响应无关 – user970742

回答

0

您应该处理您的http呼叫处理中的异步业务逻辑。启动一个处理bl方法的新线程,并继续发送响应。如果你开始正确的话,你的线程将不会停止。

0

是的你是对的,你可以发送一个请求只有一个响应,并且这样做异步不会帮助你,因为你不能保持请求,直到后台线程完成它。解决这个问题的理想方法是在小部件中分解api(服务器方法)并优化逻辑,以便在预期时间内响应。 如果你计算大型数据集比推荐使用windows-service(或其他一些后台机制)进行计算并将计算数据存储在数据库中。

0

在长时间运行的任务开始之前,尽快启动通过Response.Flush()发送的请求。这将立即将标题发送到客户端。提醒:该通话后您将无法更改HTTP标头。

+0

你的意思是说我可以写下一个代码Response.Flush();/*我的逻辑*/Response.Write(“ok”);到Response.End(); ? – user970742

+0

@ user970742是的 –