サーバーがダウンしているときに、単純なビューをレンダリングする必要があります。サーバー接続をチェックするグローバル フィルターがあります。サーバーが存在する場合にビューを表示するには、フィルター内でリダイレクトを実行する必要があります。問題は、コントローラーへのリダイレクトが発生しないことです。フィルター内のコードが数回実行された後、ブラウザーでリクエストが多すぎるというエラーが発生します。画像またはテキストにリダイレクトすると、すべてうまくいきます。しかし、ビューをレンダリングすることはできません。
グローバル フィルター:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
using (var connection = new SqlConnection ConfigurationManager.ConnectionStrings["IncbbsConnection"].ToString()))
{
try
{ connection.Open(); }
catch (SqlException)
{
// This works, the text shows:
//var content = new ContentResult {Content = "Server down!", ContentType = "text/plain"};
// filterContext.Result = content;
// This works, the image appears:
//filterContext.Result = new RedirectResult("~/Content/images/LoginLogo1.png");
// doesn't perform redirect to a controller
filterContext.Result = new RedirectToRouteResult("ServerDown",new RouteValueDictionary(new controller = "Error", action = "ServerDownView"}));
}
finally
{ connection.Close(); }
}
}