我有一个WebAPI应用程序,用于数据库中的一些RESTful操作。效果很好,但我想将路由与根URL匹配。例如,我想转到站点的根目录并查看一些动态生成的有用信息。

目前,我已经对其进行设置,使其遵循api/{controller}/{action}的标准约定,但是当导航到根目录而不是api/diagnostics/all之类的内容时,如何显示此信息?

基本上我想要的是,当用户导航到根URL时,我想将该请求路由到TestController.Index()
我在WebApiConfig.cs文件中具有以下设置:

public static void Register(HttpConfiguration config)
{
    // Web API routes
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "Index",
        routeTemplate: "",
        defaults: new { controller = "Test", action = "Index" }
    );

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

这就是我的TestController.cs的样子:
[RoutePrefix("api")]
public class TestController : ApiController
{

    [Route("TestService"), HttpGet]
    public string Index()
    {
         return "Service is running normally...";
    }
}

最佳答案



在这种情况下,请确保未使用以下属性装饰TestController.Index操作:

[Route("TestService")]

因此,您的TestController可能如下所示:
[RoutePrefix("api")]
public class TestController : ApiController
{
    [HttpGet]
    public string Index()
    {
        return "Service is running normally...";
    }
}

现在,只需导航到//api即可。

10-01 08:58