使用 swashbucle 启用 swagger 时出错
Error enabling swagger with swashbucle
我正在尝试使用几个简单的控制器创建一个 WebApi 项目。如果我使用 fiddler 调用方法,一切都很好,但是我更喜欢使用 swashbuckle,因为它更漂亮。
但是,使用默认配置安装的 swashbuckle 无法正常工作。
当我导航到
http://localhost/api/mycontroller/swagger
它重定向到
http://localhost/api/mycontroller/swagger/ui/index
但是它只是显示以下错误:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost/api/Management/swagger/ui/index'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'swagger'.
</MessageDetail>
</Error>
我的路由如下:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我遇到了同样的问题,我们只使用属性路由,所以这可能并不适用于所有人。
默认情况下,WebApiConfig 如下所示:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
如果您删除默认路由的 MapHttpRoute 部分,并且只有:
config.MapHttpAttributeRoutes();
它像冠军一样工作!!!我尝试按照 FAQ 进行修复,但这是唯一有效的方法。另一个要考虑的项目是我只需要 Swashbuckle.Core.
我们找到了解决问题的非常简单的方法。
将 swagger 添加到项目后,它会自动更新 App_Start 中的 Bootstrapper.cs,它看起来像这样:
WebApiConfig.Register(config);
UnityConfig.Register(config, container);
SignalRConfig.Register(app, container);
SwaggerConfig.Register(config);
只需将 swagger 移至列表顶部即可使其在网络 api 路由之前正确注册其路由:
SwaggerConfig.Register(config); // Swagger must be the first thing in this sequence or it just does not work...
WebApiConfig.Register(config);
UnityConfig.Register(config, container);
SignalRConfig.Register(app, container);
只是发帖希望对其他人有所帮助。
我正在尝试使用几个简单的控制器创建一个 WebApi 项目。如果我使用 fiddler 调用方法,一切都很好,但是我更喜欢使用 swashbuckle,因为它更漂亮。
但是,使用默认配置安装的 swashbuckle 无法正常工作。
当我导航到 http://localhost/api/mycontroller/swagger
它重定向到 http://localhost/api/mycontroller/swagger/ui/index
但是它只是显示以下错误:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost/api/Management/swagger/ui/index'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'swagger'. </MessageDetail>
</Error>
我的路由如下: config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我遇到了同样的问题,我们只使用属性路由,所以这可能并不适用于所有人。
默认情况下,WebApiConfig 如下所示:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
如果您删除默认路由的 MapHttpRoute 部分,并且只有:
config.MapHttpAttributeRoutes();
它像冠军一样工作!!!我尝试按照 FAQ 进行修复,但这是唯一有效的方法。另一个要考虑的项目是我只需要 Swashbuckle.Core.
我们找到了解决问题的非常简单的方法。
将 swagger 添加到项目后,它会自动更新 App_Start 中的 Bootstrapper.cs,它看起来像这样:
WebApiConfig.Register(config);
UnityConfig.Register(config, container);
SignalRConfig.Register(app, container);
SwaggerConfig.Register(config);
只需将 swagger 移至列表顶部即可使其在网络 api 路由之前正确注册其路由:
SwaggerConfig.Register(config); // Swagger must be the first thing in this sequence or it just does not work...
WebApiConfig.Register(config);
UnityConfig.Register(config, container);
SignalRConfig.Register(app, container);
只是发帖希望对其他人有所帮助。