diff --git a/IRaCIS.Core.API/Progranm.cs b/IRaCIS.Core.API/Progranm.cs index 1df9a24b5..419c98313 100644 --- a/IRaCIS.Core.API/Progranm.cs +++ b/IRaCIS.Core.API/Progranm.cs @@ -95,8 +95,11 @@ builder.Services.AddControllers(options => }) .AddNewtonsoftJsonSetup(builder.Services); // NewtonsoftJson 序列化 处理 -//动态WebApi + UnifiedApiResultFilter 省掉控制器代码 +// Panda动态WebApi + UnifiedApiResultFilter + 省掉控制器代码 builder.Services.AddDynamicWebApiSetup(); +//MinimalAPI +builder.Services.AddMasaMinimalAPIs(); + //AutoMapper builder.Services.AddAutoMapperSetup(); //EF ORM QueryWithNoLock @@ -126,32 +129,8 @@ builder.Services.AddDicomSetup(); // 实时应用 builder.Services.AddSignalR(); -//MinimalAPI -builder.Services.AddMasaMinimalAPIs(options => -{ - options.Prefix = "";//自定义前缀 默认是api - options.Version = ""; //默认是V1 - options.AutoAppendId = false; //路由是否自动附加参数Id 默认是true - options.PluralizeServiceName = false; //服务名称是否启用复数 - //options.Assemblies = new List() { typeof(UserSiteSurveySubmitedEventConsumer).Assembly }; - options.GetPrefixes = new List { "Get", "Select", "Find" }; - options.PostPrefixes = new List { "Post", "Add", "Create", "List" }; - options.PutPrefixes = new List { "Put", "Update" }; - options.DeletePrefixes = new List { "Delete", "Remove" }; - - options.RouteHandlerBuilder= t=> { - t.RequireAuthorization() - .AddEndpointFilter() - //.AddEndpointFilter() - .AddEndpointFilter() - .WithGroupName("Institution").DisableAntiforgery(); - }; - options.MapHttpMethodsForUnmatched = new string[] { "Post" }; - options.DisableTrimMethodPrefix = true; //禁用去除方法前缀 - options.DisableAutoMapRoute = false;//可通过配置true禁用全局自动路由映射或者删除此配置以启用全局自动路由映射 -}); //// 添加反伪造服务 //builder.Services.AddAntiforgery(options => diff --git a/IRaCIS.Core.API/_ServiceExtensions/DynamicWebApiSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/DynamicWebApiSetup.cs index 71a6fcae7..d08f37322 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/DynamicWebApiSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/DynamicWebApiSetup.cs @@ -1,9 +1,13 @@ -using Microsoft.Extensions.DependencyInjection; +using IRaCIS.Core.Application.Service.BusinessFilter; +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.DependencyInjection; using Panda.DynamicWebApi; +using System.Collections.Generic; namespace IRaCIS.Core.API { - public static class DynamicWebApiSetup + public static class WebApiSetup { //20210910 避免冗余的控制器层代码编写,仅仅包了一层前后台定义的格式 这里采用动态webAPi+IResultFilter 替代大部分情况 public static void AddDynamicWebApiSetup(this IServiceCollection services) @@ -20,5 +24,37 @@ namespace IRaCIS.Core.API }); } + + public static void AddMasaMinimalAPiSetUp(this IServiceCollection services) + { + services.AddMasaMinimalAPIs(options => + { + options.Prefix = "";//自定义前缀 默认是api + options.Version = ""; //默认是V1 + options.AutoAppendId = false; //路由是否自动附加参数Id 默认是true + options.PluralizeServiceName = false; //服务名称是否启用复数 + + //options.Assemblies = new List() { typeof(UserSiteSurveySubmitedEventConsumer).Assembly }; + + options.GetPrefixes = new List { "Get", "Select", "Find" }; + options.PostPrefixes = new List { "Post", "Add", "Create", "List" }; + options.PutPrefixes = new List { "Put", "Update" }; + options.DeletePrefixes = new List { "Delete", "Remove" }; + + options.RouteHandlerBuilder = t => { + t.RequireAuthorization() + .AddEndpointFilter() + //.AddEndpointFilter() + .AddEndpointFilter() + .WithGroupName("Institution").DisableAntiforgery(); + }; + options.MapHttpMethodsForUnmatched = new string[] { "Post" }; + options.DisableTrimMethodPrefix = true; //禁用去除方法前缀 + options.DisableAutoMapRoute = false;//可通过配置true禁用全局自动路由映射或者删除此配置以启用全局自动路由映射 + }); + } + + + } } diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index b5619fe1a..6154027e4 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -51,7 +51,6 @@ namespace IRaCIS.Core.API //迁移的时候,不生成外键 options.ReplaceService(); - options.UseLoggerFactory(logFactory); options.UseExceptionProcessor(); @@ -63,10 +62,6 @@ namespace IRaCIS.Core.API options.UseProjectables(); - //options.AddInterceptors(new AuditingInterceptor(configuration.GetSection("ConnectionStrings:RemoteNew").Value)); - - //options.UseTriggers(triggerOptions => triggerOptions.AddTrigger()); - //options.UseTriggers(triggerOptions => triggerOptions.AddAssemblyTriggers(typeof(SubjectVisitTrigger).Assembly)); @@ -84,13 +79,7 @@ namespace IRaCIS.Core.API triggerOptions.AddTrigger(); - - - - }); - - }); // Register an additional context factory as a Scoped service, which gets a pooled context from the Singleton factory we registered above, diff --git a/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs index f2a6b5730..af2f537b2 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/MassTransitSetup.cs @@ -11,7 +11,6 @@ namespace IRaCIS.Core.API public static void AddMassTransitSetup(this IServiceCollection services) { - #region MassTransit //masstransit组件 也支持MediatR 中介者模式,但是支持分布式,考虑后续,所以在次替代MediatR //参考链接:https://masstransit.io/documentation/concepts/mediator#scoped-mediator