3

我想我有一个类似的问题,因为这个 post -Webactivator 不在 IIS 7 上运行

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

假设下面的所有 url 都有一个“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

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

4

1 回答 1

4

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

config.EnableSwagger(c =>
            {
                c.IncludeXmlComments(GetXmlCommentsPath());

                c.SingleApiVersion("v1", "yourAPI");

                c.RootUrl(req => req.RequestUri.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/").TrimEnd('/'));

            });

参考:UI 请求 URL 的相对路径

于 2015-04-24T09:03:10.343 回答