【发布时间】:2020-12-09 14:17:00
【问题描述】:
我在我的 Web API 的 OWIN startup.cs 文件中实现了 Swagger,但是当我尝试打开 Swagger UI 页面时,它显示 HTTP Error 404.0 - Not Found
检查 Swagger UI 的 URL:https://localhost:5001/swagger
这是我的实现,请帮我解决我所缺少的。
Startup.cs
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/api", map => { ConfigureApiArea(map); });
}
private void ConfigureApiArea(IAppBuilder map)
{
var config = CreateTypedConfiguration<BaseApiController>();
//Json Settings
JsonFormatterSettings(config);
ConfigureAutofac(config, map);
ConfigureOAuth(map);
config.EnableCors(new EnableCorsAttribute("*", "*", "*", "Paging-Headers,X-Error"));
map.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
config.EnsureInitialized();
map.UseWebApi(config);
}
private HttpConfiguration CreateTypedConfiguration<TBaseController>() where TBaseController : IHttpController
{
var config = new HttpConfiguration();
config.Services.Replace(typeof(IHttpControllerTypeResolver), new
TypedHttpControllerTypeResolver<TBaseController>());
config.EnableSwagger();
config.MapHttpAttributeRoutes(new TypedDirectRouteProvider<TBaseController>());
return config;
}
}
SwaggerExtensions.cs
public static class SwaggerExtensions
{
public static HttpConfiguration EnableSwagger(this HttpConfiguration httpConfiguration)
{
httpConfiguration
.EnableSwagger(c => c.SingleApiVersion("v1", "MyWebAPI"))
.EnableSwaggerUi();
return httpConfiguration;
}
}
MyController.cs
public class MyController : BaseApiController
{
[AllowAnonymous]
[HttpGet]
[Route("orders/{orderId}")]
public IHttpActionResult GetOrder([FromUri]string orderId) {
return Ok();
}
}
BaseApiController.cs
public class BaseApiController : ApiController { }
【问题讨论】:
-
你试过
https://localhost:5001/api/swagger吗? -
是的,我做了 localhost:5001/api/swagger 和 localhost:5001/api/swagger/ui,但还是没有相同的 404
标签: c# asp.net-web-api swagger owin swagger-ui