/// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }