NSwag 不适用于 ASP.NET Web API 2 和 OWIN。刚刚收到 404

mik*_*igs 5 owin asp.net-web-api2 nswag

我正在尝试使用 OWIN 在新的 Web API 项目上设置 NSwag,但没有成功。我想知道文档是否没有提到某些内容或者我错过了一个步骤。我按照Middlewares Wiki的说明进行操作,但是当我加载默认的 swagger 端点时,我只得到 404。

我需要做些什么来生成应该位于该位置的内容吗?我一直假设中间件可以处理这个问题。

NSwag 是否要求 MVC 成为您项目的一部分?它可以在仅是 Web API 的应用程序中运行吗?

我已经检查了示例项目,但它们都没有将 OWIN 与 ASP.NET Web API 2 一起使用。只有一个 global.asax 示例和一个 .Net Core 示例。

如果您愿意,您可以轻松地重现我的问题。只需使用OWIN Web API 入门模板创建一个新的 ASP.NET Web 应用程序,然后从Middlewares Wiki执行设置即可。(当您创建新项目时, “添加新项目”向导底部附近有一个链接:单击此处上网并查找模板。单击该链接并搜索“OWIN Web API 入门模板”。

如果我需要提供更多详细信息,请告诉我。除了发布一堆代码之外,该入门项目应该允许您在 5-10 分钟内重现我的问题。

谢谢!

use*_*702 2

@RobertDyball 发布的解决方案过于复杂。默认情况下,StaticFile 处理程序是最后执行的处理程序。这意味着简单地拦截所有 NSwag 请求就足够了:

<add name="NSwag" path="swagger" verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)

这也曾经是Swashbuckle 推荐的方法,直到它切换到无扩展名 URL。您可能会注意到,ASP.NET 能够使用<add name="ExtensionlessUrlHandler-Integrated-4.0".