需要MVC3请求延迟

时间:2011-09-05 11:59:06

标签: asp.net-mvc-3 c#-4.0 asynchronous long-polling

我有一个MVC3应用程序。我必须在一个uri请求中添加延迟。我知道最简单的方法是睡眠,但生产中的应用程序有大量的请求,我担心让没有线程的iis响应其他请求。

我正在寻找解决方案的异步控制器/操作。

对于iis thead池来说,在“actionSync”方法中执行thread.sleep会更好吗?

我该如何解决这个延迟?也许是一个异步操作调用一个新的Web服务来执行thread.sleep里面的内容?

    AsyncManager.OutstandingOperations.Increment();
    DelayService delayService = new DelayService();
    delayService.GetDelayCompleted += (sender, e) =>
    {
        AsyncManager.Parameters["result"] = e.Value;
        AsyncManager.OutstandingOperations.Decrement();
    };
    newsService.GetDelayAsync(seconds);

在这种情况下,如果我将此Web服务部署到同一个IIS,mvc3应用程序会影响mvc3应用程序的iis可用线程?如果部署在不同的应用程序池中会怎样?

偶然的是什么?

1 个答案:

答案 0 :(得分:0)

你能考虑使用微软发布的新的ASP.NET MVC 4位吗?

如果是这样,这可能是一个可能的解决方案:

public class TestController : AsyncController {
    public async Task<ActionResult> GetData() {
        await Task.Delay(5000);

        return Content("Done");
    }
}