如何在asp.net web api中更改默认路由

时间:2012-06-23 19:06:54

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

我正在使用asp.net web api。我试图在global.asax文件中为我的项目设置默认路由,如

localhost:45678/api/Products

但我没有找到类似于asp.net mvc路线模型的任何格式,如

url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }

它总是将我重定向到主页(HomeController)。请指导我。

7 个答案:

答案 0 :(得分:9)

检查RouteConfig文件夹中的App_Start课程。您应该看到可以更改的默认路线。

        routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );

修改

阅读完您的评论后,我认为问题不在于您的路线。我不确定你为什么想要这样做,但你只需要指定项目的起始URL。右键单击您的Web项目 - 单击属性 - 单击 Web 选项卡 - 在“开始操作”下选择开始URL 并在其中输入http://localhost:45678/api/Products框。保存您的项目并再次运行。它应该从新的位置开始。

答案 1 :(得分:4)

问题可能是几乎所有人都会遇到的常见错误。

这里的事实是,无论您使用何种框架,都会在System.Web.Routing.RouteTable.Routes集合下收集所有路由。因此,如果在ASP.NET Web API路由之前放置ASP.NET MVC默认路由,则永远不会扫描ASP.NET Web API路由,因为MVC路由将匹配。

我假设通过查看到目前为止提供的内容就是这种情况。如果情况并非如此,请将完整的解决方案上传到某处,人们可以全面了解。

答案 2 :(得分:1)

实际上,如果我们能够在properties-> web->开始位置设置默认路线。那么global.asax文件中路由表,自定义路由,RegisterRoutes的需求是什么。我试过这种方式

起初似乎是,

routes.MapHttpRoute(
    name: "Default Api",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

现在我想将localhost:xxxx/api/products作为我的网络API的默认路线,然后

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/Products/{id}",
    defaults: new { controller = "Products", id = RouteParameter.Optional }
);

但结果没有用。

答案 3 :(得分:0)

[编辑:我的答案与凯文的答案相同]

您是说当从Visual Studio运行项目时,它会打开浏览器到项目主页吗?

Web API项目模板包含MVC控制器和Web API控制器。

URI“http:// localhost:xxxx /”是MVC控制器,而“http:// localhost:xxx / api / products”是API控制器。

在Visual Studio中运行项目时,默认情况下将导航到“http:// localhost:xxxx”。在正常操作中,客户端将请求它想要的任何URI。

您可以在“项目属性/ Web /开始操作”下更改Visual Studio设置。

答案 4 :(得分:0)

我认为你已经围绕解决方案跳了起来但是错过了标记。试试这个:

  1. 确保您正在调用GlobalConfiguration.Configure(WebApiConfig.Register);在你的Global.asax.cs。

  2. WebApiConfig.Register()中将默认路由设置为:

    routes.MapHttpRoute(name:" DefaultApi", routeTemplate:" api / {Controller} / {id}&#34 ;,默认值:new {controller =" Products",id = RouteParameter.Optional});

  3. 在您的网络项目设置中,请确保您拥有"启动网址"属性设置为:

    本地主机:45678

  4. 祝你好运。

答案 5 :(得分:0)

使用管理员权限重新启动VS可以解决此问题。 环境信息:   - 操作系统:Windows 10(64位)   - 视觉工作室:2017年。

答案 6 :(得分:0)

在Visual Studio项目下,展开 Properties 文件夹。然后打开 launchSettings.json 文件,然后在该文件中查找“ launchUrl” 属性

您可以更改正在使用的配置文件的默认启动路径。

  

“ launchUrl”:“ api /产品”