【问题标题】:static routing returning 404?静态路由返回 404?
【发布时间】:2013-07-27 05:17:20
【问题描述】:

我正在尝试创建如下静态路由:

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        name: "Hire",
        url: "Hire/{gender}",
        defaults: new { controller = "Hire", action = "Index" }
    );
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}

但是,例如,当我尝试访问 /Hire/Female 时,IIS 会抛出 404 错误,因为我正在阅读有关路由的信息,我注意到路由通常写为 {controller}/{action}/{something},是吗?必须在我的路线上有 {controller} 和 {action}?

这是控制器的代码:

public class HireController : Controller
{
    [HttpGet]
    public ActionResult Index(string gender)
    {
        return View();
    }
}

我有一个名为 /Views/Hire/Index.cshtml 的文件

我试图实现的是将来自 /Hire/Male 和 /Hire/Female 的请求路由到我的 HireController 的 Index 操作,但我感觉我忘记了一些东西,因为我尝试过不同的方式并且总是返回 404


更新 1

我从 http://www.codeproject.com/Articles/299531/Custom-routes-for-MVC-Application 安装了 RouteDebugger,它只显示了 MVC 的“基本”路由({resource}.axd/{*pathInfo} 和 {controller}/{action}/{id}),它没有t 显示我映射的路线

【问题讨论】:

  • 您的路线设置正确。当路由值中提到它们时,您不需要提供控制器和操作名称作为 url 的一部分。您是否以任何方式尝试使用 POST 访问 /Hire/Female
  • @ParvSharma 我直接在浏览器中输入 URL,我也尝试删除 [HttpGet] 但仍然不行
  • 确保网站根目录下没有任何名为 Hire 的文件夹
  • @ParvSharma 谢谢我已经检查过了,唯一名为“Hire”的文件夹在“Controllers”文件夹中,我在相关问题中看到一个人有一个非常相似的问题,他说他重新-创建了控制器,一切正常,但这对我也不起作用,我不需要在 web.config 上添加配置来“启用”路由吗?
  • 是的。尝试重新编译项目

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


【解决方案1】:

原来我在错误的位置添加了 RegisterRoutes 方法,我认为我必须在 Global.asax 中包含该方法,我猜在 MVC4 之前 Global.asax 是正确的位置,但是,在 MVC4 上我必须使用位于 /App_Start/RouteConfig.cs 中的文件映射路线

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2018-03-08
    • 2021-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多