路由找不到我的ActionResult方法

时间:2012-04-27 00:15:08

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

我为我的MVC3应用程序创建了一个带有Http400To404 ActionResult的ErrorController。

路线测试仪匹配特定路线。尽管如此,我收到的错误是:

“在控制器'Xxxxxx.Yyyyyyyyy.Zzzzzz.Controllers.ErrorController'上找不到公共操作方法'http400to404'。

以下是网址的代码:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
  string url = "~/Error/Http400To404?Exception=System.Exception%3A%20Failed%20to%20authorized% 20the%20request".ToLower();

  filterContext.Result = new RedirectResult(url);
}

以下是ErrorController类:

public class ErrorController : Controller
{
  [HttpGet]
  [HttpPost]
  public ActionResult Http400To404(Exception e)
  {
   ....
  }

  ...
}

我相信它正确找到了控制器,但由于某种原因,操作结果没有被提取。我尝试了以下方法使Url无效:

string url = urlHelper.RouteUrl("ErrorDefault", 
                            new RouteValueDictionary { { "Exception", (new Exception("Failed to authorized the request.")).ToString() },
                           {"controller","Error"},
                           {"action", "Http400To404"}});

我可以为您提供任何帮助。 谢谢, 即

1 个答案:

答案 0 :(得分:0)

从ActionResult中删除[HttpPost]属性。此外,默认情况下,操作会响应GET和POST,因此在这种情况下,您无需指定任何属性。