Je reçois une exception intermittente indiquant que asp.net mvc ne peut pas trouver la méthode d'action. Voici l'exception:
Une méthode d'action publique «Fill» est introuvable sur le contrôleur «Schoon.Form.Web.Controllers.ChrisController».
Je pense que le routage est correctement configuré car cette application fonctionne la plupart du temps. Voici la méthode d'action du contrôleur.
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
La route:
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d+" }
);
Et voici la pile:
System.Web.HttpException: Une méthode d'action publique 'Fill' n'a pas pu être trouvée sur le contrôleur 'Schoon.Form.Web.Controllers.ChrisController'. à System.Web.Mvc.Controller.HandleUnknownAction (String actionName) dans C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: ligne 197 à System.Web.Mvc.Controller.ExecuteCore () dans C : \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: ligne 164 à System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) dans C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: ligne 76 à System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) dans C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: ligne 87 à System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) dans C:
Voici un exemple de mes filtres, ils fonctionnent tous de la même manière:
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);
}
}
Merci Chris