我有一个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可用线程?如果部署在不同的应用程序池中会怎样?
偶然的是什么?
答案 0 :(得分:0)
你能考虑使用微软发布的新的ASP.NET MVC 4位吗?
如果是这样,这可能是一个可能的解决方案:
public class TestController : AsyncController {
public async Task<ActionResult> GetData() {
await Task.Delay(5000);
return Content("Done");
}
}