2016-12-02 89 views
0

我跟着these instructions向我的ASP.NET Core应用程序添加Swagger。当Web应用程序托管在一个子目录中时,ASP.NET Core Swagger使用不正确的json url

当我主持它作为一个根网站,但是当我主持的应用程序与现有网站上的别名,说myserver.com/myapp,招摇会寻找swagger.json在一个不正确的网址,并报告它正常工作:*无法读取招摇JSON来自https://myserver.com/swagger/v1/swagger.json。它应该改用https://myserver.com/myapp/swagger/v1/swagger.json

我得到的消息是:

无法从https://myserver.com/swagger/v1/swagger.json

阅读招摇JSON我如何配置swashbuckle /招摇使用的应用程序基本路径,并寻找swagger.json文件在正确的地方?

我在IIS上托管。

swashbuckle的版本是:

"Swashbuckle": "6.0.0-beta902" 

我怀疑,我将不得不在Startup.csConfigure方法添加一些东西到app.UseSwaggerUi(),但我不知道是什么。

启动配置

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
{ 
    loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
    loggerFactory.AddDebug(); 

    if (env.IsDevelopment()) 
    { 
     app.UseDeveloperExceptionPage(); 
     app.UseBrowserLink(); 
    } 
    else 
    { 
     app.UseExceptionHandler("/Home/Error"); 
    } 

    app.UseStaticFiles(); 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 
    }); 

    // Enable middleware to serve generated Swagger as a JSON endpoint 
    app.UseSwagger(); 

    // Enable middleware to serve swagger-ui assets (HTML, JS, CSS etc.) 
    app.UseSwaggerUi(); 
} 
+0

我有同样的问题。它在我的本地机器上运行良好,但部署后我遇到了同样的问题。我已经尝试了许多配置方法,包括在这篇文章中发现的一些。请让我知道你是否已经解决了它! https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/128 –

回答

0

我最终明确指定端点:

app.UseSwagger(); 

app.UseSwaggerUi(c => 
{ 
    c.SwaggerEndpoint($"/swagger/v1/swagger.json", "MyAPI documentation"); 
    //c.SwaggerEndpoint($"/myapi/swagger/v1/swagger.json", "MyAPI documentation"); 
}); 

我已经和托管在IIS和IIS Express中的Web API打打闹闹,和我最终不得不根据我所在的应用程序托管位置来更换端点。

2

您可以使用ASPNETCORE_APPL_PATH环境变量来获取应用程序的基本路径。

app.UseSwaggerUI(c => 
{ 
    string basePath = Environment.GetEnvironmentVariable("ASPNETCORE_APPL_PATH"); 
    if (basePath == null) basePath = "/"; 
    c.SwaggerEndpoint($"{basePath}swagger/v1/swagger.json", "My API"); 
}); 
相关问题