12

我正在研究 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)。请指导我。

4

8 回答 8

12

在您的文件夹中检查您的RouteConfig班级。App_Start您应该会看到可以更改的默认路由。

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

编辑

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

于 2012-06-23T19:47:17.983 回答
4

这个问题可能是几乎很多人都会犯的常见错误。

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

通过查看您迄今为止提供的内容,我假设这里就是这种情况。如果不是这种情况,请将完整的解决方案上传到某个地方,人们可以全面了解。

于 2012-06-23T21:54:49.120 回答
2

实际上,如果我们可以在 properties->web->start location 中设置默认路由。那么在 global.asax 文件中需要什么路由表、自定义路由、RegisterRoutes。我试过这种方式

起初似乎,

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

现在我想localhost:xxxx/api/products为我的 web api 作为默认路由,

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

但是没有用的结果。

于 2012-06-26T00:08:26.010 回答
1

在 Visual Studio 中开发时,您可以通过展开项目的Properties文件夹进行设置。然后打开launchSettings.json文件并在此文件中查找“launchUrl”属性

您可以更改正在处理的配置文件的默认启动路线。

“launchUrl”:“api/产品”

于 2019-05-20T10:14:09.740 回答
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。

您可以在 Project Properties / Web / Start Action 下更改 Visual Studio 设置。

于 2012-06-24T18:06:37.500 回答
0

您需要添加:

Response.Redirect("Products.aspx");

index()类中的方法HomeController

于 2021-12-18T21:24:29.217 回答
0

在我的 ASP .NET Core Web API 项目中,每当您调试项目时,它都会将浏览器启动到预定义的 URL。这可以通过右键单击项目并转到属性然后调试选项卡来配置,如下所示。 在此处输入图像描述

也就是说,不确定这与上面之前的答案中描述的launchsettings.json有什么区别。

在此处输入图像描述

于 2021-10-09T06:02:15.213 回答
0

我认为您已经围绕解决方案跳舞,但只是错过了目标。尝试这个:

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

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

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

  3. 在您的 Web 项目设置中,确保您将“Start Url”属性设置为:

    本地主机:45678

祝你好运。

于 2017-05-28T23:45:09.467 回答