Ricevo un'eccezione intermittente dicendo che asp.net mvc non riesce a trovare il metodo di azione. Ecco l'eccezione:
Impossibile trovare un metodo di azione pubblica "Fill" sul controller "Schoon.Form.Web.Controllers.ChrisController".
Penso di aver impostato correttamente il routing perché questa applicazione funziona la maggior parte del tempo. Ecco il metodo di azione del controller.
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
La strada:
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d+" }
);
Ed ecco lo stack:
System.Web.HttpException: Impossibile trovare un metodo di azione pubblica "Fill" sul controller "Schoon.Form.Web.Controllers.ChrisController". in System.Web.Mvc.Controller.HandleUnknownAction (String actionName) in C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: riga 197 in System.Web.Mvc.Controller.ExecuteCore () in C : \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: riga 164 in System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) in C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: riga 76 in System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) in C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: riga 87 in System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) in C:
Ecco un esempio dei miei filtri funzionano tutti allo stesso modo:
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);
}
}
Grazie, Chris