【问题标题】:Routing does not find my ActionResult method路由找不到我的 ActionResult 方法
【发布时间】:2012-04-27 00:15:08
【问题描述】:

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

Route 测试器匹配特定的路由。尽管如此,我收到一条错误消息:

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

以下是url的代码:

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"}});

感谢您提供的任何帮助。 谢谢, E.

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2021-06-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多