【问题标题】:Swashbuckle running with katana-owin based web api doesnt work with IIS but works with IIS Express使用基于 katana-owin 的 Web api 运行的 Swashbuckle 不适用于 IIS,但适用于 IIS Express
【发布时间】:2015-07-02 01:39:57
【问题描述】:

我想我和这篇文章有类似的问题- Webactivator doesn't run on IIS 7

使用基于 katana-owin 的 web api 运行的 Swashbuckle 能够使用 IIS Express。

假设下面的所有网址都有一个“http”前缀。 我可以浏览到类似 localhost:8085/swagger 的内容,它将我正确重定向到 localhost:8085/swagger/ui/index

但是当发布到 IIS 时,会重定向到 localhost/swagger/ui/index 而不是 localhost/myapp/swagger/ui/index,这会导致 404。请注意,即使在以某种方式发布时指定了应用程序名称,swashbuckle/swagger 也不知道并且只使用没有应用程序名称的路径库。

基本上它只是获取站点根 URL,而不是用于调用 /swagger 的应用程序 URL

这个问题有什么解决办法吗?

【问题讨论】:

    标签: iis asp.net-web-api owin swagger swashbuckle


    【解决方案1】:

    我遇到了同样的问题。使用以下代码(c.RootUrl)解决了这个问题

    config.EnableSwagger(c =>
                {
                    c.IncludeXmlComments(GetXmlCommentsPath());
    
                    c.SingleApiVersion("v1", "yourAPI");
    
                    c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/").TrimEnd('/'));
    
                });
    

    参考:Relative path for UI request URL

    【讨论】:

    • 在我的情况下,我从配置中获取了我想使用的 RootURL - 但是设置 RootURL 值肯定为我解决了这个问题。
    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 2022-08-16
    • 2013-04-30
    • 2012-12-01
    • 1970-01-01
    • 2012-10-29
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多