Swagger UI 未在 azure .net 核心中生成,但可在本地运行

Akh*_*hil 3 c# azure swagger-ui .net-core asp.net-core

Swagger UI 在 azure 中部署时不会在 .net 核心应用程序中创建,但它在本地运行良好

我已经添加了这个

启动.cs中的ConfigureServices(IServiceCollection services)方法

services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info
{
Version = "v1",
Title = "API",
Description = "API"
});
});
Run Code Online (Sandbox Code Playgroud)

app.UseSwagger();
app.UseSwaggerUI(c =>
{
  c.SwaggerEndpoint("/swagger/v1/swagger.json", "API");
  c.RoutePrefix = "swagger";
});
app.UseAuthentication();

env.ConfigureNLog("nlog.config");
loggerFactory.AddNLog();

app.UseSignalR(routes =>
{
  routes.MapHub<DashboardHub>("/hubs/dashboard");
});

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

app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";

    if (env.IsDevelopment())
    {
         spa.UseReactDevelopmentServer(npmScript: "start");
    }
});
Run Code Online (Sandbox Code Playgroud)

在配置中(IApplicationBuilder 应用程序、IHostingEnvironment 环境、ILoggerFactory loggerFactory)

小智 5

确保代码不在 IF 条件 (env.IsDevelopment()) 中。这就是为什么只在本地主机上工作的原因。这避免了在生产时间工作。

像例子一样取出swagger初始化。

            if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();

            // NOT HERE

        }

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

        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),  
        // specifying the Swagger JSON endpoint.  
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            c.RoutePrefix = string.Empty;
        });
Run Code Online (Sandbox Code Playgroud)


Moh*_*rma 0

有几点需要注意:

  • 请确保您使用的是正确且升级的稳定版本,您可以参考下面的截图进行验证:

在此输入图像描述

  • 使用http://www.test-cors.org网站验证 CORS 支持。请记住,即使 Access-Control-Allow-Headers 不可用,这也会显示成功的结果,这仍然是 Swagger UI 正常运行所必需的。

  • 请确保您已按照以下文档进行操作,以使用 dot net core 配置 swagger。

https://github.com/domaindrivendev/Swashbuckle.AspNetCore#swashbuckleaspnetcoreswaggerui

如果仍然没有帮助,请提供代码仓库,将进一步帮助您。

注意:swagger-ui-react是打包为 React 组件的 Swagger UI,用于 React 应用程序。

您还可以在这里浏览一些示例:

https://github.com/domaindrivendev/Swashbuckle.AspNetCore/blob/master/test/WebSites/NetCore3/Startup.cs

希望能帮助到你。