【问题标题】:Create Route With 2 Static Literals Before Controller在控制器之前使用 2 个静态文字创建路由
【发布时间】:2013-01-12 04:17:20
【问题描述】:

好的,我认为这很简单,但我错过了一些东西。我正在映射一个 Web API 路由并希望它如下所示:

http://localhost:1234/api/myBlog/Articles

并认为这会起作用:

routes.MapRoute(
   name: "BlogApi",                
   url: "api/myBlog/{controller}/{id}",
   defaults: new { controller = "Articles", id = UrlParameter.Optional }
);

“myBlog”段不是控制器或文件夹。我只是希望它成为 URL 的一部分。我尝试使用ArticlesController 控制器在Controllers 下创建一个名为“myBlog”的文件夹,但这并没有什么不同。我总是得到 404 not found:找不到与名为“myBlog”的控制器匹配的类型。

当我做http://localhost:1234/api/myBlog时也很奇怪,路由Articles中的默认控制器没有使用,所以也想知道这个。

如果我执行以下操作,我只能让它工作:

routes.MapRoute(
   name: "BlogApi",                
   url: "api/Articles/{id}",
   defaults: new { controller = "Articles", id = UrlParameter.Optional }
);

并致电:http://localhost:1234/api/Articles

我在这里缺少什么?谢谢!

【问题讨论】:

    标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing


    【解决方案1】:

    用途:

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
       name: "BlogApi",                
       routeTemplate: "api/myBlog/Articles/{id}",
       defaults: new { controller = "Articles", id = UrlParameter.Optional }
    );
    

    并将其放在默认路由之前。

    【讨论】:

    • 我实际上注释掉了默认路由(应该提到这一点),当我尝试这个时我仍然得到 404。当我在 Fiddler 中检查它时,我收到以下消息:找不到与名为“myBlog”的控制器匹配的类型
    • 这是 VS.NET 2012 与 ASP.NET 秋季更新 RC 在创建 Web API 项目时默认使用的。我不是从头开始写这些,而是​​复制和粘贴。你是说MapHttpRouteMapRoute 不同吗?
    • 同理,但是web api路由是在WebApiConfig.Register()方法下注册的,如果你在RouteConfig.RegisterRoutes()下注册它们就不会被拾取,因为默认的Web API路由是较早。在 WebApiConfig.Register() 中注册路由
    • 将其移至 WebApiConfig,默认路由之前,我收到以下错误:未找到与请求 URI localhost:4940/api/myBlog/… 路由提供匹配的 HTTP 资源找到与请求 URI 匹配的控制器名称
    • 我做了一个演示项目,一切正常,也许你可以参考一下? 1.localhost:41049/api/myblog/articles(转到 ArticlesController) 2.localhost:41049/api/other(转到任何其他控制器,即 OtherController)dropbox.com/s/wt24ao6bcirinnz/MvcApplication4.zip
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2012-05-14
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多