[英]Is there a way to delay an HTTP response in ASP.NET MVC 4 without using Thread.Sleep?
我想延迟我的网站身份验证请求的响应,以便服务器在收到请求时的特定秒数偏移处开始响应。
例如,如果用户进行身份验证,在04:00:00
,我想响应回来在04:00:05
,没有早也不晚。 如果代码无法满足截止日期,我希望它导致错误。
这必须在服务器端完成,我想避免使用Thread.Sleep
。 虽然,我认为可能有一种方法可以使用异步控制器并在请求的部分继续使用Thread.Sleep
这里有没有人面临类似的挑战,你的解决方案是什么?
你们中的任何人都可以想到一种方法来避免Thread.Sleep
并保持响应能力吗?
您可以在MVC 4中使用Async支持 (如果您使用的是MVC 3,则可以使用AsyncController)
public async Task<ActionResult> GizmosAsync()
{
var gizmoService = new GizmoService();
return View("Gizmos", await gizmoService.GetGizmosAsync());
}
然后,等待中的方法可以使用它所需的时间,包括Thread.Sleep。
这样,您就不会阻止ASP.net处理其他请求。
您可以使用自定义ActionFilters。
如果您使用的是全局过滤器而非属性,请确保您的过滤器在授权过滤器([授权]?)之前运行或在其之前注册。
这样延迟对授权用户没有影响,我认为这是你不想使用Thread.Sleep的原因。 请注意,默认情况下Thread.Sleep不是很准确(大约20ms),但客户端的网络延迟应该模糊不清。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.