0

$.ajaxmvc3 で部分ビューを取得するためにjQuery 呼び出しを使用しました。同時に、sessionfilter を使用してセッション タイムアウトをチェックしました。セッションがタイムアウトすると、ログイン ページに戻りますが、ログイン ページはページ全体にリダイレクトされるのではなく、部分的なページ div 内に表示されます。global.ascx ページで以下のコードを修正しようとしましたが、機能しません。次のエラーがスローされます。

public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
   filterContext.HttpContext.Response.Clear();
   filterContext.HttpContext.Response.Write("**custom error message**");
   filterContext.HttpContext.Response.StatusCode = 401;
   filterContext.HttpContext.Response.End();
}

例外を以下に示します

 at System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent)
 at System.Web.HttpResponseWrapper.Redirect(String url, Boolean endResponse)
 at TransFlow.SessionExpireFilterAttribute.OnAuthorizationHelp(ActionExecutingContext filterContext) in D:\LocalSVN\INTELLAFLO\5_Source\branches\balasubramanian\TransFlow\TransFlow\Global.asax.cs:line 131
 at TransFlow.SessionExpireFilterAttribute.OnActionExecuting(ActionExecutingContext filterContext) in D:\LocalSVN\INTELLAFLO\5_Source\branches\balasubramanian\TransFlow\TransFlow\Global.asax.cs:line 120
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
 at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14()
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)
 at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<>c__DisplayClass17.<InvokeActionMethodWithFilters>b__14()
 at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList`1 filters, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
 at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
 at System.Web.Mvc.Controller.ExecuteCore()
 at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
 at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
 at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
 at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
 at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
 at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
 at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
 at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
 at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
 at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
 at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
 at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
 at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
4

1 に答える 1

0

応答に直接書き込むのではなく、アクションフィルターまたはコントローラーからリダイレクトする必要があります。これにより、発生しているページレイアウトの問題を回避できます。

于 2012-12-26T09:02:58.003 に答える