到目前为止,我已经尝试了以下方法 - 1)添加了用于处理超时的自定义属性。
public class TimeOutFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
System.Web.HttpContext.Current.GetType().GetField("_timeoutState", System.Reflection.BindingFlags.Instance |
System.Reflection.BindingFlags.NonPublic).SetValue(System.Web.HttpContext.Current, 1);
base.OnActionExecuting(filterContext);
}
}
在 Global.asax 中添加了以下内容
filters.Add(new TimeOutFilter());
使用 [TimeOutFilter] 属性来装饰控制器
2) 添加 AsyncTimeout 属性来装饰控制器/Action,如下所示:
[AsyncTimeout(10)]
3) 将 executionTimeout 设置为 web.config 文件中的值。
<httpRuntime targetFramework="4.5" maxRequestLength="10240" executionTimeout="10" />
4) 将 HttpContext.Server.ScriptTimeout 设置为控制器中的某个值。
HttpContext.Server.ScriptTimeout = 10;
使用第 1 点中的步骤,我能够在请求超时时将用户重定向到登录屏幕。但这不是我要找的。
当请求超时发生时,我正在寻找获取或触发异常。
如果有什么方法可以做到这一点,有人可以告诉我吗?