验证重定向过期将导致GET而不是POST

问题描述

|| 我有一个页面用户正在编辑一些内容。如果该页面上的身份验证到期,并且他们按下“保存”按钮,则由于会话超时,他们将被重定向登录页面。但是,当他们重新进行身份验证时,重定向在我期望POST时在页面上执行GET,因此它将生成HttException \“在控制器\'HLPUSD上未找到公共操作方法\'Close \'。 HEAT.Web.Controllers.TicketController。\“ 我需要怎么做才能解决这个问题? 编辑 例外:
System.Web.HttpException (0x80004005): A public action method \'SavePrecedence\' was not found on controller \'HLPUSD.HEAT.Web.Controllers.QueueController\'.
at System.Web.Mvc.Controller.HandleUnkNownAction(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__displayClass8.<BeginProcessRequest>b__4()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__displayClass1.<MakeVoidDelegate>b__0()
at System.Web.Mvc.Async.AsyncResultWrapper.<>c__displayClass81.<BeginSynchronous>b__7(IAsyncResult _)
at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult1.End()
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)
    

解决方法

如果您遵守以下约定:
public ActionResult Foo()
{
    ...
}

[HttpPost]
public ActionResult Foo(SomeViewModel model)
{
    ...
}
其中第一个动作呈现一个表单,第二个动作用于处理该表单的提交,当您同时拥有此资源的GET和POST动作时,它将起作用,并且在所述的情况下,用户将被简单地重定向到“ 2”,这将简单地再次呈现表单。