You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

110 lines
3.7 KiB
C#

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

using DS.Module.Core;
using DS.Module.Core.Extensions;
using DS.Module.Core.Filters;
using DS.Module.Core.Modules;
using DS.Module.Jwt;
using DS.Module.Log;
using DS.Module.SqlSugar;
using DS.Module.Swagger;
using DS.Module.User;
using DS.WMS.Core.DBSeed;
using DS.WMS.Core.System.Dtos;
using FluentValidation.AspNetCore;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace DS.WMS.WebApi;
/// <summary>
/// 基础模块
/// </summary>
[DSDependsOn(
typeof(DependencyAppModule),
typeof(NLogModule),
typeof(SqlSugarModule),
typeof(SwaggerModule),
typeof(JwtModule),
typeof(UserModule))]
public class DSAppWebModule : DSAppModule
{
private string policyName = string.Empty;
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public override void ConfigureServices(ConfigureServicesContext context)
{
var service = context.Services;
service.Configure<ApiBehaviorOptions>(options =>
{
// 禁用默认模型验证过滤器
options.SuppressModelStateInvalidFilter = true;
});
service.AddControllersWithViews(options =>
{
// 全局添加自定义模型验证过滤器
options.Filters.Add<ModelActionFiter>();
//全局异常过滤
options.Filters.Add<GlobalExceptionsFilter>();
// options.Filters.Add(typeof(GlobalExceptionsFilter));
options.SuppressAsyncSuffixInActionNames = false;
//x.Filters.Add<PermissionAuthorizationFilter>();
})
.AddFluentValidation(config => //添加FluentValidation验证
{
var controllerAssemblies = new[]
{
typeof(UserLoginValidation).Assembly,
};
// config.ImplicitlyValidateChildProperties = true;
foreach (var assembly in controllerAssemblies)
{
config.RegisterValidatorsFromAssembly(assembly);
}
})
//全局配置Json序列化处理
.AddNewtonsoftJson(options =>
{
//忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//不使用驼峰样式的key
// options.SerializerSettings.ContractResolver = new DefaultContractResolver();
//设置时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
});
//跨域请求
policyName = AppSetting.Configuration["Cors:PolicyName"];
var corsUrl = AppSetting.Configuration["Cors:Url"];
service.AddCors(c =>
{
c.AddPolicy(policyName, policy =>
{
policy.WithOrigins(corsUrl
.Split(",", StringSplitOptions.RemoveEmptyEntries).ToArray())
//policy.WithOrigins("http://localhost:5001")//支持多个域名端口,注意端口号后不要带/斜杆比如localhost:8000/,是错的
.AllowAnyHeader().AllowAnyMethod().AllowCredentials(); //允许cookie;
});
});
}
/// <summary>
///
/// </summary>
/// <param name="context"></param>
public override void ApplicationInitialization(ApplicationContext context)
{
var applicationBuilder = context.GetApplicationBuilder();
if (!policyName.IsNullOrEmpty())
{
applicationBuilder.UseCors(policyName); //添加跨域中间件
}
applicationBuilder.UseRouting();
applicationBuilder.UseStaticFiles();
}
}