我正在使用Web API进行属性路由,如果我使用以下控制器请求URL / myapi / list ,一切都按预期工作:
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route("list")]
public async Task<string> Get()
{
// Return result
}
}
但是,我希望 Get()方法为默认,即在请求网址 / myapi 时(不包含< strong> / list part)。
但是,如果我删除“路径属性的”列表“部分,就像这样...
[RoutePrefix("myapi")]
public class MyController : ApiController
{
[HttpGet]
[Route] // Default route
public async Task<string> Get()
{
// Return result
}
}
...我收到 403.14 错误
“Web服务器配置为不列出此内容 目录“。
可能导致这种情况的任何想法?
谢谢!
修改:如果我使用默认路由模式(如 / api / myapi )请求API控制器,则会映射到 Get()按预期的方法。
在属性路由后注册默认路由:
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
答案 0 :(得分:2)
使用
[Route("")]
表示默认路线
[RoutePrefix("myapi")]
public class MyController : ApiController
{
//GET myapi
[HttpGet]
[Route("")] // Default route
public async Task<string> Get() { ... }
}
答案 1 :(得分:1)