Swagger中的链接不正确

时间:2018-06-04 06:59:10

标签: asp.net-core swagger swashbuckle

我正在使用ASP.NET Core 2.0和Swashbuckle.AspNetCore(2.4.0)

在Startup ConfigureServices

services.AddSwaggerGen(c =>
        {
            c.OperationFilter<AuthorizationHeaderParameterOperationFilter>();
         c.SwaggerDoc("v1", new Info
            {
                Version = "v1",
                Title = "Library API",
                Description = "ASP.NET Core Web API",
                TermsOfService = "None",
                Contact = new Contact
                {
                    Name = "my name",
                    Email = "myname@mywebsite"
                }
            });
        });
      });

在启动配置

          app.UseSwagger(c =>
        {
            c.RouteTemplate =
                "api-docs/{documentName}/swagger.json";
        });
        app.UseSwaggerUI(c =>
        {
            c.RoutePrefix = "api-docs";
            c.SwaggerEndpoint("v1/swagger.json", "Api v1");
        });

 public class AuthorizationHeaderParameterOperationFilter : IOperationFilter
    {
        public void Apply(Operation operation, OperationFilterContext context)
        {
            var filterPipeline = context.ApiDescription.ActionDescriptor.FilterDescriptors;
            var isAuthorized = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is AuthorizeFilter);
            var allowAnonymous = filterPipeline.Select(filterInfo => filterInfo.Filter).Any(filter => filter is IAllowAnonymousFilter);

            if (isAuthorized && !allowAnonymous)
            {
                if (operation.Parameters == null)
                    operation.Parameters = new List<IParameter>();

                operation.Parameters.Add(new NonBodyParameter
                {
                    Name = "Authorization",
                    In = "header",
                    Description = "access token",
                    Required = true,
                    Type = "string"
                });
            }
        }
    }

看起来像这样

localhost site

然而链接转到网址

about:blank

如何设置v1 / swagger.json链接和服务条款链接到正确的位置?

1 个答案:

答案 0 :(得分:1)

使用c.SwaggerEndpoint("./v1/swagger.json", "Api v1");

这看起来像一个错误,相对路径(没有'/')呈现空链接但swagger.json可用并且一切正常。

我使用相对路径与反向代理正常工作,但这是另一个故事......