Recibo una excepción intermitente diciendo que asp.net mvc no puede encontrar el método de acción. Aquí está la excepción:Excepción intermitente de asp.net mvc: "No se encontró un método de acción pública ABC en el controlador XYZ".
Un método de acción pública 'llenar' podría no se encuentran en el controlador 'Schoon.Form.Web.Controllers.ChrisController'.
Creo que tengo el enrutamiento configurado correctamente porque esta aplicación funciona la mayor parte del tiempo. Aquí está el método de acción del controlador.
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
La ruta:
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d+" }
);
Y aquí está la pila:
System.Web.HttpException: Un método público acción 'llenar' no pudo ser encontrado en el controlador 'Schoon.Form.Web.Controllers.ChrisController'. en System.Web.Mvc.Controller.HandleUnknownAction (String actionName) en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: línea 197 en System.Web.Mvc.Controller .ExecuteCore() en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: línea 164 en System.Web.Mvc.ControllerBase.Execute (RequestContext RequestContext) en C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: línea 76 en System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ \ MVC ControllerBase.cs: Línea 87 al System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase HttpContext) en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ Mvc \ MvcHandler.cs: línea 80 en System.Web.Mvc.MvcHandler.ProcessRequest (HttpContext HttpContext) en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ Mvc \ MvcHandler.cs: línea 68 en System.Web.Mvc.MvcHandler.System.Web.IHttpHandler.ProcessRequest (HttpContext HttpContext) en C: \ dev \ Terceros \ MvcDev \ src \ SystemWebMvc \ Mvc \ MvcHandler.cs: línea 104 en System.Web.H ttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() en System.Web.HttpApplication.ExecuteStep (IExecutionStep paso, Boole & completedSynchronously)
Este es un ejemplo de mis filtros todos funcionan de la misma manera:
public class UserIdFilter : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
const string Key = "userId";
if (filterContext.ActionParameters.ContainsKey(Key))
{
filterContext.ActionParameters[Key] = // get the user id from session or cookie
}
base.OnActionExecuting(filterContext);
}
}
Gracias, Chris
que tenía un problema similar que creo que vale la pena señalar aquí que este fue el primer resultado que surgió en Google cuando se busca la excepción anteriormente. Mi aplicación arrojó esta excepción al enviar un formulario no válido. Esto se debió a que la página que se estaba reescribiendo llamaba a RenderAction y la acción que se llamó para generar una vista parcial se marcó con el atributo HttpGet, eliminando que este atributo resolviera el problema. – s1mm0t
También he notado este comportamiento: quizás sea mejor no aplicar ningún atributo Http a los métodos del controlador que devuelven PartialViewResults. – Stuart
@ s1mm0t - Me salvó la cordura. – LiamB