【问题标题】:C# owin web api route index pageC# owin web api 路由索引页面
【发布时间】:2018-12-28 07:02:11
【问题描述】:

http://localhost:2000/api/{Controller}

我需要创建索引页面。

URI:http://localhost:2000/api

config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "api",
routeTemplate: "api"
);

还有 api

[RoutePrefix("api")]
public class Api
{
    [HttpGet]
    public HttpResponseMessage Get()
    {
        var result = new HttpResponseMessage(HttpStatusCode.OK);
        result.Content = new ByteArrayContent(Encoding.ASCII.GetBytes("API"));
        return result;
    }
}

但是当我打开http://localhost:2000/api 时,它不起作用。

未找到与请求 URI http://localhost:2000/api 匹配的 HTTP 资源。

【问题讨论】:

  • @mjwills 是的,但是 localhost:2000/api 和 localhost:2000/api/api ,它显示没有找到 HTTP 资源
  • 您是否启用了属性路由?您的控制器还需要从 ApiController 派生
  • @Nkosi 是的,config.MapHttpAttributeRoutes();
  • 公共类Api必须继承自Controller或ApiController

标签: c# asp.net-web-api owin


【解决方案1】:

需要确保您遵循 API 控制器的建议语法。

[RoutePrefix("api")]
public class MyApiController: ApiController {
    [HttpGet]
    [Route("")] // GET api
    public IHttpActionResult Get() {
        return Ok("API");
    }
}

这包括让您的控制器派生自 ApiController

如果使用带有路由前缀的属性路由,您仍然需要在操作上提供路由。

[Route("")] 在上面这种情况下将充当该控制器的默认路由。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-08
    • 1970-01-01
    • 2014-02-07
    • 2022-11-20
    • 2015-03-20
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    相关资源
    最近更新 更多