当前位置: 首页 > 知识库问答 >
问题:

在IIS上部署API时不显示虚张声势的UI

宋高寒
2023-03-14

嗯,我在API文档中使用了Swagger,它在本地主机中工作得很好,当我将它托管在IIS上时,问题就开始了。对于somereason来说,它不再起作用了

本地主机:

https://localhost:44381/swagger/index.html
http://200.155.29.14/SimuladorFrete/Swagger/index.html
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();

    }
    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
    app.UseSwagger();
    app.UseStaticFiles();
    app.UseSwaggerUI(c =>
    {
        if (env.IsDevelopment())
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "Web API V1");
        }
        else
        {
            // To deploy on IIS
            c.SwaggerEndpoint("/SimulaFrete/swagger/v1/swagger.json", "Web API V1");
        }

    });
}
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers().AddNewtonsoftJson();

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1",

      new OpenApiInfo
      {

          Title = "Simulador de frete por Unidade",
          Version = "v1",
          Description = "Métodos da API de simulação de frete",
          Contact = new OpenApiContact
          {
              Name = "Catalde Technology",
              Url = new Uri("https://www.catalde.com"),
              Email = "cicero.catalde@catalde.com"
          }
      });

        string caminhoAplicacao =
            PlatformServices.Default.Application.ApplicationBasePath;
        string nomeAplicacao =
            PlatformServices.Default.Application.ApplicationName;
        string caminhoXmlDoc =
            Path.Combine(caminhoAplicacao, $"{nomeAplicacao}.xml");

        c.IncludeXmlComments(caminhoXmlDoc);
        c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First()); //This line
    });
}

我的控制器代码只有这个方法

[HttpPost]
public ContentResult Post([FromBody]dadosFrete xml)
{
    // code logic
}

共有1个答案

袁晋鹏
2023-03-14

您需要在您的条件中临时添加production子句,然后才能看到生产环境中的昂首阔步。请参见所附图像中突出显示的黄色部分。env.isProduction()

 类似资料:
  • null 另外,作为API开发人员,如果我不使用它,我会失去什么?

  • 我正在ASP中使用Swashback 5。NET webapi项目,具有所有默认设置。它序列化方法的输出,以便向我显示应答的模式。我得到的文档如下所示: 这是由以下C#代码生成的 结果在哪里。结果基本上是一个标准的对象列表,每个对象都包含这些键/值/id字段。我在这里读过https://conficient.wordpress.com/2014/05/22/getting-rid-of-k__ba

  • 我的中有以下操作。NET核心2控制器。它是一个API,应该存储作为应用程序/x-www-form-urlencoded发布的所有数据 所以斯瓦格UI允许使用UI尝试这个动作:斯瓦格UI 但是SwaggerUI生成带有正文的POST:formData=field 1=value e1&field 2=value e2 我希望它是:field1=value1 所以问题是,这是OpenAPI的限制,还是

  • 我想使用Swashuckle(swagger for. net)在WebAPI项目上进行基于API密钥的身份验证。 我已经配置了如下虚张声势: (见 https://github.com/domaindrivendev/Swashbuckle#describing-securityauthorization-schemes) 它似乎创建了我所期望的swagger文件: 但是当我进入UI并‘尝试’时

  • 在我的“简化”API中,所有响应都是从基本“响应”类派生(继承)的。响应类由一个填充元数据的头和一个包含用户请求的核心数据的主体组成。响应(在JSON中)的布局使得所有元数据都在第一个“层”上,而主体是一个称为“主体”的单一属性 我试图用以下JSON来定义这种关系: 然后,我尝试通过创建从body/header继承的各种body/header类来创建不同的响应,然后创建由相关的header/bod

  • 我正在为我的spring boot项目使用swagger注释。 我想为控制器的每个资源返回一个公共响应代码契约。 在文件中:https://github.com/swagger-api/swagger-core/wiki/annotations#apiresponses-apiresponse他们谈论@ApiResponses,但我不能将注释放在类级别。 以下是我所做的: 但问题是和中的坏东西从未