转换文件编码

This commit is contained in:
不做码农
2022-06-01 17:25:41 +08:00
parent 3b8ec3cc95
commit b4dceca92f
3 changed files with 70 additions and 70 deletions

View File

@@ -33,39 +33,39 @@ namespace ZR.Admin.WebApi
{
string corsUrls = Configuration["corsUrls"];
//<EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD>
//配置跨域
services.AddCors(c =>
{
c.AddPolicy("Policy", policy =>
{
policy.WithOrigins(corsUrls.Split(',', StringSplitOptions.RemoveEmptyEntries))
.AllowAnyHeader()//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
.AllowCredentials()//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>cookie
.AllowAnyMethod();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
.AllowAnyHeader()//允许任意头
.AllowCredentials()//允许cookie
.AllowAnyMethod();//允许任意方法
});
});
//ע<EFBFBD><EFBFBD>SignalRʵʱͨѶ<EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>json<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//注入SignalR实时通讯默认用json传输
services.AddSignalR(options =>
{
//<EFBFBD>ͻ<EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󵽷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>30<EFBFBD><EFBFBD>ij<EFBFBD>4<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>connection.keepAliveIntervalInMilliseconds = 12e4;<EFBFBD><EFBFBD>2<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//客户端发保持连接请求到服务端最长间隔默认30秒改成4分钟网页需跟着设置connection.keepAliveIntervalInMilliseconds = 12e4;即2分钟
//options.ClientTimeoutInterval = TimeSpan.FromMinutes(4);
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󵽿ͻ<EFBFBD><EFBFBD>˼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>15<EFBFBD><EFBFBD>ij<EFBFBD>2<EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD>ҳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>connection.serverTimeoutInMilliseconds = 24e4;<EFBFBD><EFBFBD>4<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//服务端发保持连接请求到客户端间隔默认15秒改成2分钟网页需跟着设置connection.serverTimeoutInMilliseconds = 24e4;即4分钟
//options.KeepAliveInterval = TimeSpan.FromMinutes(2);
});
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Error unprotecting the session cookie<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//消除Error unprotecting the session cookie警告
services.AddDataProtection()
.PersistKeysToFileSystem(new DirectoryInfo(Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + "DataProtection"));
//<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD>
//普通验证码
services.AddHeiCaptcha();
services.AddIPRate(Configuration);
services.AddSession();
services.AddMemoryCache();
services.AddHttpContextAccessor();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Model<EFBFBD><EFBFBD>
//绑定整个对象到Model
services.Configure<OptionsSetting>(Configuration);
//jwt <EFBFBD><EFBFBD>֤
//jwt 认证
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
@@ -80,7 +80,7 @@ namespace ZR.Admin.WebApi
services.AddMvc(options =>
{
options.Filters.Add(typeof(GlobalActionMonitor));//ȫ<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD>
options.Filters.Add(typeof(GlobalActionMonitor));//全局注册
})
.AddJsonOptions(options =>
{
@@ -99,7 +99,7 @@ namespace ZR.Admin.WebApi
app.UseDeveloperExceptionPage();
}
app.UseSwagger();
//ʹ<EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD>ζ<EFBFBD>ȥbody<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//使可以多次多去body内容
app.Use((context, next) =>
{
context.Request.EnableBuffering();
@@ -109,33 +109,33 @@ namespace ZR.Admin.WebApi
}
return next();
});
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>̬<EFBFBD>ļ<EFBFBD>/wwwrootĿ¼<C4BF>ļ<EFBFBD><C4BC><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>UseRoutingǰ<EFBFBD><EFBFBD>
//开启访问静态文件/wwwroot目录文件要放在UseRouting前面
app.UseStaticFiles();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD>ɷ<EFBFBD><EFBFBD><EFBFBD>
//开启路由访问
app.UseRouting();
app.UseCors("Policy");//Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>app.UseEndpointsǰ<EFBFBD><EFBFBD>
app.UseCors("Policy");//要放在app.UseEndpoints前。
//app.UseAuthentication<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Authentication<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>ǰHttp<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>Cookie<EFBFBD><EFBFBD>Ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>HttpContext.User<65><72><EFBFBD>ԣ<EFBFBD><D4A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>app.UseAuthentication<EFBFBD><EFBFBD><EFBFBD><EFBFBD>֮<EFBFBD><EFBFBD>ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܹ<EFBFBD><EFBFBD><EFBFBD>HttpContext.User<EFBFBD>ж<EFBFBD>ȡ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
//<EFBFBD><EFBFBD>Ҳ<EFBFBD><EFBFBD>Ϊʲô<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿ<EFBFBD><EFBFBD>app.UseAuthentication<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>app.UseMvc<76><63><EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><E6A3AC>Ϊֻ<CEAA><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ASP.NET Core<EFBFBD><EFBFBD>MVC<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD>в<EFBFBD><EFBFBD>ܶ<EFBFBD>ȡ<EFBFBD><EFBFBD>HttpContext.User<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD>
//1.<EFBFBD>ȿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֤
//app.UseAuthentication会启用Authentication中间件该中间件会根据当前Http请求中的Cookie信息来设置HttpContext.User属性后面会用到
//所以只有在app.UseAuthentication方法之后注册的中间件才能够从HttpContext.User中读取到值,
//这也是为什么上面强调app.UseAuthentication方法一定要放在下面的app.UseMvc方法前面因为只有这样ASP.NET CoreMVC中间件中才能读取到HttpContext.User的值。
//1.先开启认证
app.UseAuthentication();
//2.<EFBFBD>ٿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ
//2.再开启授权
app.UseAuthorization();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>session
//开启session
//app.UseSession();
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//开启缓存
app.UseResponseCaching();
//<EFBFBD>ָ<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//恢复/启动任务
app.UseAddTaskSchedulers();
//ʹ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>м<EFBFBD><EFBFBD><EFBFBD>
//使用全局异常中间件
app.UseMiddleware<GlobalExceptionMiddleware>();
//<EFBFBD><EFBFBD><EFBFBD>ÿͻ<EFBFBD><EFBFBD><EFBFBD>IP<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//启用客户端IP限制速率
app.UseIpRateLimiting();
app.UseEndpoints(endpoints =>
{
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>socket<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//设置socket连接
endpoints.MapHub<MessageHub>("/msgHub");
endpoints.MapControllerRoute(
@@ -145,7 +145,7 @@ namespace ZR.Admin.WebApi
}
/// <summary>
/// ע<EFBFBD><EFBFBD>Services<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// 注册Services服务
/// </summary>
/// <param name="services"></param>
/// <param name="configuration"></param>
@@ -153,12 +153,12 @@ namespace ZR.Admin.WebApi
{
services.AddAppService();
services.AddSingleton(new AppSettings(configuration));
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//开启计划任务
services.AddTaskSchedulers();
//<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>db
//初始化db
DbExtension.AddDb(configuration);
//ע<EFBFBD><EFBFBD>REDIS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//注册REDIS 服务
Task.Run(() =>
{
//RedisServer.Initalize();