/// <summary> /// 添加全局数据验证 /// </summary> /// <param name="mvcBuilder"></param> /// <param name="enabledGlobalDataValidationFilter">启用全局验证过滤器</param> /// <param name="suppressImplicitRequiredAttributeForNonNullableReferenceTypes">禁止C# 8.0 验证非可空引用类型</param> /// <returns></returns> public static IMvcBuilder AddDataValidation(this IMvcBuilder mvcBuilder, bool enabledGlobalDataValidationFilter = true, bool suppressImplicitRequiredAttributeForNonNullableReferenceTypes = true) { var services = mvcBuilder.Services; // 添加验证配置文件支持 services.AddConfigurableOptions <ValidationTypeMessageSettingsOptions>(); // 判断是否启用全局 if (enabledGlobalDataValidationFilter) { // 关闭引用类型空检查 mvcBuilder.ConfigureApiBehaviorOptions(options => { options.SuppressModelStateInvalidFilter = true; }); // 添加全局数据验证 mvcBuilder.AddMvcFilter <DataValidationFilter>(options => { // 关闭空引用对象验证 options.SuppressImplicitRequiredAttributeForNonNullableReferenceTypes = suppressImplicitRequiredAttributeForNonNullableReferenceTypes; }); } return(mvcBuilder); }
/// <summary> /// 添加友好异常服务拓展服务 /// </summary> /// <param name="mvcBuilder">Mvc构建器</param> /// <param name="enabledGlobalExceptionFilter">是否启用全局异常过滤器</param> /// <returns></returns> public static IMvcBuilder AddFriendlyException(this IMvcBuilder mvcBuilder, bool enabledGlobalExceptionFilter = true) { // 新增基础配置 AddBaseConfigure(mvcBuilder.Services); // 添加全局异常过滤器 if (enabledGlobalExceptionFilter) { mvcBuilder.AddMvcFilter <FriendlyExceptionFilter>(); } return(mvcBuilder); }
/// <summary> /// 添加规范化结果服务 /// </summary> /// <typeparam name="TUnifyResultProvider"></typeparam> /// <param name="mvcBuilder"></param> /// <returns></returns> public static IMvcBuilder AddUnifyResult <TUnifyResultProvider>(this IMvcBuilder mvcBuilder) where TUnifyResultProvider : class, IUnifyResultProvider { // 是否启用规范化结果 UnifyContext.IsEnabledUnifyHandle = true; // 获取规范化提供器模型 UnifyContext.RESTfulResultType = typeof(TUnifyResultProvider).GetCustomAttribute <UnifyModelAttribute>().ModelType; // 添加规范化提供器 mvcBuilder.Services.AddSingleton <IUnifyResultProvider, TUnifyResultProvider>(); // 添加成功规范化结果筛选器 mvcBuilder.AddMvcFilter <SucceededUnifyResultFilter>(); return(mvcBuilder); }