Tôi nhận được một ngoại lệ không liên tục nói rằng asp.net mvc không thể tìm thấy phương thức hành động. Đây là ngoại lệ:
Không thể tìm thấy phương thức hành động công khai 'Fill' trên bộ điều khiển 'Schoon.Form.Web.Controllers.ChrisController'.
Tôi nghĩ rằng tôi đã thiết lập định tuyến chính xác vì ứng dụng này hoạt động hầu hết thời gian. Đây là phương thức hành động của bộ điều khiển.
[ActionName("Fill")]
[AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post), UserIdFilter, DTOFilter]
public ActionResult Fill(int userId, int subscriberId, DisplayMode? mode)
{
//…
}
Lộ trình:
routes.MapRoute(
"SchoonForm",
"Form/Fill/{subscriberId}",
new { controller = "ChrisController", action = "Fill" },
new { subscriberId = @"\d+" }
);
Và đây là ngăn xếp:
System.Web.HttpException: Không tìm thấy phương thức hành động công khai 'Fill' trên controller 'Schoon.Form.Web.Controllers.ChrisController'. tại System.Web.Mvc.Controller.HandleUnknownAction (String actionName) trong C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: dòng 197 tại System.Web.Mvc.Controller.ExecuteCore () trong C : \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ Controller.cs: dòng 164 tại System.Web.Mvc.ControllerBase.Execute (RequestContext requestContext) trong C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: dòng 76 tại System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute (RequestContext requestContext) trong C: \ dev \ ThirdParty \ MvcDev \ src \ SystemWebMvc \ Mvc \ ControllerBase.cs: dòng 87 tại System.Web.Mvc.MvcHandler.ProcessRequest (HttpContextBase httpContext) trong C:
Đây là một ví dụ về các bộ lọc của tôi, tất cả chúng đều hoạt động theo cùng một cách:
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);
}
}
Cảm ơn, Chris