【问题标题】:Web Api documentation with swashbuckle带有 swashbuckle 的 Web Api 文档
【发布时间】:2016-03-22 10:50:01
【问题描述】:

我们目前正在尝试为我们的产品编写 WebApi 服务,从传统的基于 WCF SOAP 的服务切换。我们面临的挑战是如何提供 api 文档。我遇到了 SwaggerUi/swash 扣。 我们的一个限制是我们不想在 IIS 中托管 WebApi 服务,而是在 Windows 服务中托管。我是 Web Api 的新手,所以我可能会以错误的方式做事。

因此,为了进行测试,我将 Web api 托管在控制台应用程序中。我可以使用 HttpClient 调用 Web Api 上的 Get 方法,但如果我在 Web 浏览器中键入 url,我将无法访问相同的方法(这对于自托管 Web api 来说是否正常?)。

所以我安装了 Swashbuckle.core nuget 包,并将以下代码包含在 Startup 类(Owin 自托管)中。

 var config = new HttpConfiguration();

        config
            .EnableSwagger(c =>
            {
                c.IncludeXmlComments(GetXmlCommentsPath());
                c.SingleApiVersion("v1", "WebApi");
                c.ResolveConflictingActions(x => x.First());
            })
            .EnableSwaggerUi();

 private static string GetXmlCommentsPath()
    {
        var path = $@"{AppDomain.CurrentDomain.BaseDirectory}\WebApiHost.XML";

        return path;
    }

当我浏览到以下位置时 http://localhost:5000/swagger/ui/index 我在 IE 中得到“页面无法显示”。与铬类似。 在控制台/Windows 服务应用程序中托管 WebApi 以自动获取文档时,有什么特别需要做的吗?

(我已经为项目启用了 Xml 文档)

我现在附上了一个测试项目。请点击以下链接:

Test project

问候,

纳斯

【问题讨论】:

    标签: asp.net-web-api2 swagger-ui self-hosting swashbuckle


    【解决方案1】:

    您的问题不在于配置正确的 Swashbuckle。相反,当浏览器导航到 swagger URI 时,您的 OWin Web 应用程序已经关闭。您的 using 语句意味着网络应用程序在其末尾关闭 - 早在 Chrome 打开并导航到招摇路径之前。您需要确保 Web 应用程序仍在运行 - 然后您的路径将有效(尽管在您的源代码中,您的 url 变量中有不同的端口 9000 和 5000)。

    【讨论】:

    • 非常感谢您指出这一点,我不敢相信我没有关注这么基本的东西。它现在可以工作了:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 2016-10-30
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多