Swagger не появляется, когда я начинаю отладкуC#

Место общения программистов C#
Ответить
Anonymous
 Swagger не появляется, когда я начинаю отладку

Сообщение Anonymous »

Я использовал Swagger для нескольких приложений ASP.NET Core, и он работает нормально. Итак, я не понимаю, почему его сейчас нет в новом приложении Blazor, над которым я работаю. Веб-приложение Blazor, над которым я работаю (я использую Visual Studio 2022 и .NET 9). Приложение имеет в решениях 4 проекта VS, один из них — приложение Minimal API. Из-за проблем, с которыми я столкнулся в этой конфигурации, я решил перенести проект Minimal API из этого решения VS в новое решение VS, которое имеет только один проект VS, который является минимальным API из другого решения VS.
Однако я обнаружил, что при отладке нового решения VS не вызывает Swagger. Я пробовал использовать GitHub Copilot, но это привело к тому, что Copilot бежал по кроличьей тропе. Итак, выкладываю файл Program.cs из нового решения VS. Вот код из файла Program.cs:
using AutoMapper;
using Azure.Identity;
using Azure.Extensions.AspNetCore.Configuration.Secrets;
using FPTimetrackCore.DataActionsAPI;
using FPTimetrackCore.DataActionsAPI.DTO;
using FPTimetrackCore.DataActionsAPI.Model;
using Microsoft.EntityFrameworkCore;
using System.Linq;
using System.Net;
using System;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.OpenApi.Models;

var builder = WebApplication.CreateBuilder(args);

// -- Key Vault Configuration --
var isDev = builder.Environment.IsDevelopment();
var vaultUri = Environment.GetEnvironmentVariable("VaultUri");

if(!isDev && !string.IsNullOrWhiteSpace(vaultUri))
{
builder.Configuration.AddAzureKeyVault(new Uri(vaultUri), new DefaultAzureCredential());
}

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo
{
Title = "FPTimetrackCore.DataActionsAPI",
Version = "v1"
});
});
builder.Services.AddAutoMapper(typeof(MappingConfig));

builder.Configuration.AddAzureKeyVault(
new Uri($"https://this.is.not.real/"),
new DefaultAzureCredential());

var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "FPTimetrackCore.DataActionsAPI v1");
});
}

app.UseHttpsRedirection();

static SaveData GetConnectionObject(bool prodConn)
{
IConfiguration configuration = null;
if (prodConn) // Is this really the best way to do this?
{
configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables()
.Build();
}
else
{
configuration = new ConfigurationBuilder()
.AddJsonFile("appsettings.Development.json")
.AddEnvironmentVariables()
.Build();
}
var lib = new SaveData(configuration);
return lib;
}

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseSwagger();
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "FPTimetrackCore.API v1");
});
}

const int MAX_MONTHS = -3; // This is the number of months to go back from today, from the original Family Planning Timetrack application.

app.MapGet("/api/getphdusers/{prodConn}/{Active}", (IConfiguration _config, IMapper _mapper, bool prodConn = true, bool Active = true) =>
{
TimetrackContext ctx = GetDbContext(_config, prodConn);
IQueryable phdUsers = null;
if (Active)
{
phdUsers = ctx.PhdUsers.Where(a => a.PhdUserStatus == "Active");
}
else
{
phdUsers = ctx.PhdUsers;
}
IOrderedQueryable users = phdUsers.OrderBy(o => o.PhdUserName);
var phdUserArray = users.ToArray();
var PhdUsersDTOArray = _mapper.Map(phdUserArray);
APIResponse response = new()
{
IsSuccess = true,
Result = PhdUsersDTOArray,
StatusCode = System.Net.HttpStatusCode.OK
};
return Results.Ok(response);
})
.WithName("GetPhdUsers")
.WithOpenApi()
.Produces(StatusCodes.Status200OK);

// Other endpoints go here but omitted for brevity.

app.Run();


Подробнее здесь: https://stackoverflow.com/questions/797 ... -debugging
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»