Recibo una excepción intermitente que dice que asp.net mvc no puede encontrar el método de acción. Esta es la excepción:
No se pudo encontrar un método de acción pública 'Fill' 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: No se pudo encontrar un método de acción pública 'Fill' en el controlador 'Schoon.Form.Web.Controllers.ChrisController'. en System.Web.Mvc.Controller.HandleUnknownAction (String actionName) en C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: línea 197 en System.Web.Mvc.Controller.ExecuteCore () en C : \ dev \ ThirdParty \ 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 \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: línea 87 en System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) en C:
Aquí hay 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