我有一个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...";
}
}
答案 0 :(得分:6)
您可以在WebApiConfig.cs中为默认URL添加路由。以下是根URL映射到方法HomeController.Index()
的示例:
config.Routes.MapHttpRoute(
name: "Root",
routeTemplate: "", // indicates the root URL
defaults: new { controller = "Home", action = "Index" } // the controller action to handle this URL
);
答案 1 :(得分:5)
你也可以简单地使用([Route("")]
):
public class TestController : ApiController
{
[Route(""), HttpGet]
public string Index()
{
return "Service is running normally...";
}
}
答案 2 :(得分:4)
基本上我想要的是,当用户导航到根URL时,我 想要将该请求路由到TestController.Index()
在这种情况下,请确保您没有使用此属性修饰TestController.Index操作:
[Route("TestService")]
所以这里是你的TestController的样子:
[RoutePrefix("api")]
public class TestController : ApiController
{
[HttpGet]
public string Index()
{
return "Service is running normally...";
}
}
现在只需导航到/
或/api
。