C# owin web api 路由索引页面

Posted

技术标签:

【中文标题】C# owin web api 路由索引页面【英文标题】:C# owin web api route index page 【发布时间】: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 资源。

【问题讨论】:

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

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

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

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

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

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

【讨论】:

以上是关于C# owin web api 路由索引页面的主要内容,如果未能解决你的问题,请参考以下文章

使用 Owin 时无法使 ASP.NET Web API 2 帮助页面正常工作

为 ASP.Net Core Web API 项目创建要在启动时转到的索引页面

Owin Web API Bearer Token 直通

拥有 API 和网站时如何设置路由

支持 https 的 Owin 自托管控制台应用程序(无 Web api,无 SignalR)

用Web api /Nancy 通过Owin Self Host简易实现一个 Http 服务器