我有一个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
即可。