我在 Blazor WebAssembly 解决方案上使用“.net Core 托管”选项。
这将为您创建一个 .net Core Web API 项目,作为解决方案的一部分。
如果我自己创建它并启动该项目,它将启动 API 的 Swagger UI 界面。如果我在“.net Core 托管”Blazor 应用程序中启动服务器项目,它将启动客户端应用程序(如预期)。
如何获取 Web API 服务器应用程序的 Swagger UI? (用于测试 API)。
我在谷歌上找不到任何关于此的信息 - 这个链接没有帮助: 我可以使用 Swashbuckle 从 Blazor 项目 c# 生成 Swagger UI吗
谢谢。
启动 Blazor 应用程序时,手动转到 /swagger/index.html,您将看到标准 Swagger UI。
如果您希望在运行应用程序时显示 SwaggerUI,而不是 Blazor 客户端,请编辑 launchSettings.json 并将启动配置文件的“launchUrl”值设置为 /swagger/index.html
如果您想在 MainLayout.razor 中添加指向它的链接,并确保该链接仅显示在开发环境中。
编辑:您需要确保在服务器上的program.cs 文件中设置了Swagger。 (假设Asp.NET Core 6,如果使用5,你的Startup.cs文件中应该有类似的初始化代码)
var builder = WebApplication.CreateBuilder(args);
...
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo { Title = "MyBlazor", Version = "v1" });
});
...
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
app.UseSwagger();
app.UseSwaggerUI(c =>
c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyBlazor v1"));
}
这是我的 Program.cs。请注意,我们不再需要使用 Startup 类。 blazor 和 swagger 都可以在 Program.cs 中初始化和设置。
using BlazorApp.Components;
使用 BlazorApp.Data; 使用 BlazorApp.Models;
命名空间 BlazorApp { 公开课节目 { 公共静态无效主要(字符串[]参数) { var builder = WebApplication.CreateBuilder(args);
builder.Services.AddServerSideBlazor();
builder.Services.AddHttpContextAccessor();
builder.Services.AddResponseCaching();
builder.Services.AddResponseCompression();
// Add Raozr services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents()
.AddInteractiveWebAssemblyComponents();
// Database Contexts
builder.Services.AddDbContextFactory<LendingContext>();
builder.Services.AddDbContextFactory<ReportCenterContext>();
// Services
builder.Services.AddSingleton<PortfolioService>();
builder.Services.AddSingleton<ReportService>();
builder.Services.AddSingleton<CollateralService>();
builder.Services.AddQuickGridEntityFrameworkAdapter();
// Swagger
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo
{
Title = "API",
Version = "v1",
});
});
builder.Services.AddRazorPages();
// Add Controllers
builder.Services.AddControllers();
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseSwagger();
app.UseSwaggerUI();
app.UseHttpsRedirection();
app.UseStaticFiles();
//app.UseAntiforgery();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Client._Imports).Assembly);
// Configure the HTTP request pipeline.
app.UseRouting();
app.UseAntiforgery();
app.MapControllers();
app.MapRazorPages();
app.MapDefaultControllerRoute();
app.Run();
}
}
}