これまでに次のことを試しました-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 属性を追加しました。
[AsyncTimeout(10)]
3) executionTimeout を web.config ファイルの値に設定します。
<httpRuntime targetFramework="4.5" maxRequestLength="10240" executionTimeout="10" />
4) コントローラーで HttpContext.Server.ScriptTimeout を何らかの値に設定します。
HttpContext.Server.ScriptTimeout = 10;
ポイント 1 の手順を使用して、リクエストのタイムアウト時にユーザーをログイン画面にリダイレクトすることができました。しかし、これは私が探しているものではありません。
リクエストのタイムアウトが発生したときに例外を取得またはトリガーする方法を探しています。
これを行う方法があれば誰か教えてください。