MVC3请求延迟需要
问题描述:
我有一个MVC3应用程序。我必须在一个uri请求中添加延迟。我知道最简单的方法就是睡眠,但生产中的应用程序有大量的请求,我担心让iis没有线程来响应其他请求。MVC3请求延迟需要
我正在寻找解决方案的异步控制器/操作。
对于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服务的应用程序MVC3影响IIS可用线程的应用程序MVC3相同的IIS?如果部署在不同的应用程序池中呢?
什么是ido?
答
您可以考虑使用微软发布的新ASP.NET MVC 4位吗?
如果是这样,这可能是一个可能的解决方案:
public class TestController : AsyncController {
public async Task<ActionResult> GetData() {
await Task.Delay(5000);
return Content("Done");
}
}
你为什么不这样做延迟客户端? – ZippyV
我已经做了,但是不安全的方法,可以避免延迟或延迟后发送请求。我的数据处于连续变化之中,在接受一个请求之前,我必须确保延迟完成,不多不少。这样我就必须接受延迟范围内的请求(我的延迟加上连接延迟),并且可以拒绝慢速连接。例如,如果我的延迟为4,则最小值为4,最大值可能为7,适用于连接速度较慢或移动。为了避免黑客意图,我必须拒绝少于4秒的时间,对我来说最好的解决方案就是在服务器中获得延迟。 – Fer