mirror of
https://github.com/AIDotNet/AntSK.git
synced 2026-02-17 22:10:14 +08:00
97 lines
3.6 KiB
C#
97 lines
3.6 KiB
C#
using AntDesign.ProLayout;
|
||
using Microsoft.AspNetCore.Components;
|
||
using System.Text.Encodings.Web;
|
||
using System.Text.Unicode;
|
||
using AntSK.Domain.Utils;
|
||
using AntSK.Services;
|
||
using AntSK.Domain.Common.DependencyInjection;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Swashbuckle.AspNetCore.SwaggerGen;
|
||
using System.Reflection;
|
||
using AntSK.Domain.Options;
|
||
|
||
var builder = WebApplication.CreateBuilder(args);
|
||
// Add services to the container.
|
||
builder.Services.AddControllers().AddJsonOptions(config =>
|
||
{
|
||
//此设定解决JsonResult中文被编码的问题
|
||
config.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
|
||
|
||
config.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
|
||
config.JsonSerializerOptions.Converters.Add(new DateTimeNullableConvert());
|
||
});
|
||
// Add services to the container.
|
||
builder.Services.AddRazorPages();
|
||
builder.Services.AddServerSideBlazor();
|
||
builder.Services.AddAntDesign();
|
||
builder.Services.AddScoped(sp => new HttpClient
|
||
{
|
||
BaseAddress = new Uri(sp.GetService<NavigationManager>()!.BaseUri)
|
||
});
|
||
builder.Services.Configure<ProSettings>(builder.Configuration.GetSection("ProSettings"));
|
||
builder.Services.AddScoped<IChartService, ChartService>();
|
||
builder.Services.AddScoped<IProjectService, ProjectService>();
|
||
builder.Services.AddScoped<IUserService, UserService>();
|
||
builder.Services.AddScoped<IAccountService, AccountService>();
|
||
builder.Services.AddScoped<IProfileService, ProfileService>();
|
||
builder.Services.AddServicesFromAssemblies("AntSK.Domain");
|
||
builder.Services.AddSwaggerGen(c =>
|
||
{
|
||
c.SwaggerDoc("v1", new() { Title = "AntSK.Api", Version = "v1" });
|
||
//添加Api层注释(true表示显示控制器注释)
|
||
var xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml";
|
||
var xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile);
|
||
c.IncludeXmlComments(xmlPath, true);
|
||
//添加Domain层注释(true表示显示控制器注释)
|
||
var xmlFile1 = $"{Assembly.GetExecutingAssembly().GetName().Name.Replace("Api", "Domain")}.xml";
|
||
var xmlPath1 = Path.Combine(AppContext.BaseDirectory, xmlFile1);
|
||
c.IncludeXmlComments(xmlPath1, true);
|
||
c.DocInclusionPredicate((docName, apiDes) =>
|
||
{
|
||
if (!apiDes.TryGetMethodInfo(out MethodInfo method))
|
||
return false;
|
||
var version = method.DeclaringType.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
|
||
if (docName == "v1" && !version.Any())
|
||
return true;
|
||
var actionVersion = method.GetCustomAttributes(true).OfType<ApiExplorerSettingsAttribute>().Select(m => m.GroupName);
|
||
if (actionVersion.Any())
|
||
return actionVersion.Any(v => v == docName);
|
||
return version.Any(v => v == docName);
|
||
});
|
||
});
|
||
|
||
// 读取连接字符串配置
|
||
{
|
||
builder.Configuration.GetSection("ConnectionStrings").Get<ConnectionOption>();
|
||
builder.Configuration.GetSection("AIModelList").Get<AIModelOption>();
|
||
}
|
||
var app = builder.Build();
|
||
|
||
// Configure the HTTP request pipeline.
|
||
if (!app.Environment.IsDevelopment())
|
||
{
|
||
app.UseExceptionHandler("/Error");
|
||
// 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.UseHttpsRedirection();
|
||
|
||
app.UseStaticFiles();
|
||
|
||
app.UseRouting();
|
||
|
||
app.MapBlazorHub();
|
||
app.MapFallbackToPage("/_Host");
|
||
app.UseSwagger();
|
||
//配置Swagger UI
|
||
app.UseSwaggerUI(c =>
|
||
{
|
||
c.SwaggerEndpoint("/swagger/v1/swagger.json", "AntSK API"); //注意中间段v1要和上面SwaggerDoc定义的名字保持一致
|
||
});
|
||
app.UseEndpoints(endpoints =>
|
||
{
|
||
endpoints.MapControllers();
|
||
});
|
||
|
||
app.Run(); |