【发布时间】:2015-01-26 00:29:38
【问题描述】:
我有以下控制器:
[TimeoutFilter]
public abstract class BaseController: Controller
{
}
public class IntegrationTestController : BaseController
{
[HttpGet]
public ActionResult TimeoutSeconds()
{
return Content(HttpContext.Server.ScriptTimeout.ToString(CultureInfo.InvariantCulture));
}
[HttpGet]
public ActionResult ForceTimeout()
{
var timeoutWindow = TimeoutFilter.TimeoutSeconds;
Thread.Sleep((timeoutWindow + 5) * 1000);
return Content("This should never get returned, mwahahaaa!");
}
}
对于我的测试场景,我在 TimeoutFilter 中使用了 5 秒的配置设置,我知道这是可行的,因为当我的测试调用 TimeoutSeconds 时,我得到了正确的值 5,但是当测试调用 @ 987654324@,我收到 200 的 HTTP 响应和我的“从未返回”文本。
还有过滤器:
public class TimeoutFilter : ActionFilterAttribute
{
internal const string TimeoutSecondsSettingsKey = "MvcActionTimeoutSeconds";
internal static int TimeoutSeconds;
public TimeoutFilter()
{
TimeoutSeconds = int.Parse(ConfigurationManager.AppSettings[TimeoutSecondsSettingsKey]);
}
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Controller.ControllerContext.HttpContext.Server.ScriptTimeout = TimeoutSeconds;
base.OnActionExecuting(filterContext);
}
}
【问题讨论】:
-
你能提供你的超时过滤器实现吗?
-
@JalpeshVadgama 已按要求添加。
标签: asp.net-mvc asp.net-mvc-4 http