123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225 |
- using Autofac.Extensions.DependencyInjection;
- using Autofac;
- using FreeRedis;
- using MessagePack;
- using MessagePack.Resolvers;
- using Newtonsoft.Json;
- using Newtonsoft.Json.Serialization;
- using ServiceStack;
- using WMS.BZUtil;
- using WMS.BZWeb;
- using WMS.BZWeb.Middleware;
- using WMS.Util;
- using WMS.BZSqlSugar;
- using WMS.BZServices;
- using Microsoft.Extensions.DependencyInjection;
- using SqlSugar;
- using Microsoft.Extensions.DependencyInjection.Extensions;
- using WMS.BZSqlSugar.Repositorys;
- var builder = WebApplication.CreateBuilder(args);
- builder.Logging.AddLog4Net();
- builder.Services.AddAuthentication("CookieAuth")
- .AddCookie("CookieAuth", config =>
- {
- config.Cookie.Name = "MyApp.Cookie";
- });
- // Add services to the container.
- builder.Services.AddControllersWithViews() ;
- // Add services to the container.
- // AddRazorRuntimeCompilation 与FastReport 冲突。
- var AddRazorPages= builder.Services.AddRazorPages() ;
- #if DEBUG
- AddRazorPages.AddRazorRuntimeCompilation();
- #endif
-
- var WMSRedisConnect = builder.Configuration.GetValue<string>("ConnectionConfigs:WMSRedisConnect");
- //Autofac注入
- builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
- builder.Host.ConfigureContainer<ContainerBuilder>(builder =>
- {
- builder.RegisterGeneric(typeof(Repository<>)).As(typeof(Repository<>));
- builder.RegisterGeneric(typeof(QuestDBRepository<>)).As(typeof(QuestDBRepository<>));
- //builder.RegisterGeneric(typeof(PTRepository<>)).As(typeof(PTRepository<>));
- //builder.RegisterGeneric(typeof(HJRepository<>)).As(typeof(HJRepository<>));
- //builder.RegisterGeneric(typeof(FJRepository<>)).As(typeof(FJRepository<>));
- //builder.RegisterGeneric(typeof(CPRepository<>)).As(typeof(CPRepository<>));
- //builder.RegisterGeneric(typeof(SXRepository<>)).As(typeof(SXRepository<>));
- builder.RegisterModule(new AutoFacManager());
- builder.Register(obj => new RedisService(WMSRedisConnect)).SingleInstance();
- });
- builder.Services.AddResponseCompression();
- builder.Services.AddHttpContextAccessor();
- builder.Services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
- builder.Services.AddSingleton<IOperator, Operator>();
- //builder.Services.AddTransient<FastReport.Web.Services.IConnectionsService>();
- // 添加 Redis 配置项
- builder.Services.Configure<WCSRedis>(builder.Configuration.GetSection("WCSRedis"));
- builder.Services.Configure<DeviceEffectiveUrls>(builder.Configuration.GetSection("DeviceEffectiveUrls"));
- builder.Services.AddSingleton(provider =>
- {
- var options = provider.GetRequiredService<Microsoft.Extensions.Options.IOptions<DeviceEffectiveUrls>>();
- return new Dictionary<string, string>
- {
- { "HJUrls", options.Value.HJUrls},
- { "PTUrls", options.Value.PTUrls },
- { "FJUrls", options.Value.FJUrls },
- { "SXUrls", options.Value.SXUrls },
- { "CPUrls", options.Value.CPUrls }
- };
- });
- builder.Services.AddSingleton(provider =>
- {
- MessagePackSerializer.DefaultOptions = StandardResolver.Options.WithCompression(MessagePackCompression.Lz4Block);
- var options = provider.GetRequiredService<Microsoft.Extensions.Options.IOptions<WCSRedis>>();
- return new Dictionary<string, RedisClient>
- {
- { "HJRedis", new RedisClient(options.Value.HJRedis) //options.Value.HJRedis "118.178.107.197:6379,database=0,password=123456"
- {
- Serialize = obj =>
- {
- var bytes = JsonConvert.SerializeObject(obj);// MessagePackSerializer.Serialize(obj);
- return bytes;
- },
- Deserialize = (bytes, type) =>
- {
- var obj = JsonConvert.DeserializeObject(bytes, type);// MessagePackSerializer.Deserialize(type, bytes);
- return obj;
- }
- }
- },
- { "PTRedis", new RedisClient(options.Value.PTRedis) },
- { "FJRedis", new RedisClient(options.Value.FJRedis) },
- { "SXRedis", new RedisClient(options.Value.SXRedis) },
- { "CPRedis", new RedisClient(options.Value.CPRedis) }
- };
- });
- builder.Services.AddMvcCore();
- //builder.Services.AddMvc().AddRazorPagesOptions(options =>
- //{
- // options.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
- //});
- builder.Services.AddSession(o =>
- {
- o.IdleTimeout = TimeSpan.FromHours(5);
- });
- //配置JSON.NET
- builder.Services.AddControllers().AddNewtonsoftJson(opt =>
- {
- //忽略循环引用
- opt.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
- //不改变字段大小
- opt.SerializerSettings.ContractResolver = new DefaultContractResolver();
- });
- //builder.Services.AddAntiforgery(options => options.HeaderName = "X-CSRF-TOKEN");
- //builder.WebHost.UseUrls("http://*:5000/");
- builder.Services.AddCors(policy =>
- {
- policy.AddPolicy("CorsPolicy", opt => opt
- .AllowAnyOrigin()
- .AllowAnyHeader()
- .AllowAnyMethod()
- .WithExposedHeaders("X-Pagination"));
- });
-
- var deviceEffectiveUrls = builder.Configuration.GetSection("DeviceEffectiveUrls").Get<DeviceEffectiveUrls>();
- builder.Services.AddHttpClient("HJUrls", config =>
- {
- config.BaseAddress = new Uri(deviceEffectiveUrls.HJUrls);
- //config.DefaultRequestHeaders.Add("header_1", "header_1");
- });
- builder.Services.AddHttpClient("FJUrls", config =>
- {
- config.BaseAddress = new Uri(deviceEffectiveUrls.FJUrls);
- });
- builder.Services.AddHttpClient("SXUrls", config =>
- {
- config.BaseAddress = new Uri(deviceEffectiveUrls.SXUrls);
- });
- builder.Services.AddHttpClient("PTUrls", config =>
- {
- config.BaseAddress = new Uri(deviceEffectiveUrls.PTUrls);
- });
- builder.Services.AddHttpClient("CPUrls", config =>
- {
- config.BaseAddress = new Uri(deviceEffectiveUrls.CPUrls);
- });
- builder.Services.AddHttpClient();
- var app = builder.Build();
- // Configure the HTTP request pipeline.
- if (!app.Environment.IsDevelopment())
- {
- app.UseExceptionHandler("/Error");
- // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
- app.UseHsts();
- }
- string baseDir = app.Environment.ContentRootPath;
- ConfigHelper.SetValue("baseDir", baseDir);
- //app.UseHttpsRedirection();
- //初始化db
- builder.Services.AddQuestDBSqlSugarDb(builder.Configuration, app.Environment);
- builder.Services.AddSqlSugarDb(builder.Configuration, app.Environment);
- //app.Urls.Add("http://0.0.0.0:8002");
- app.UseSession().UseCookiePolicy();
- app.UseStaticFiles();
- app.UseResponseCompression();
- app.UseRouting();
-
- //FastReport 暂时不用。与razor编译冲突。 需要卸载Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation 这个然后安装
- // FastReport.OpenSource FastReport.OpenSource.Export.PdfSimple FastReport.OpenSource.Web
- //app.UseFastReport();
- app.UseAuthorization();
- app.MapRazorPages();
- //app.UseCors(option => option.AllowAnyOrigin().WithMethods("GET", "POST").WithHeaders("token"));
-
- app.UseCors("CorsPolicy");
- //app.UseEndpoints(endpoints =>
- //{
- // endpoints.MapControllerRoute(
- // name: "default",
- // pattern: "{controller=Home}/{action=Index}/{id?}");
- // endpoints.MapControllerRoute(
- // name: "area",
- // pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
- //});
- app.UseMiddleware<AuthorizeMiddleware>();
- app.UseEndpoints(endpoints =>
- {
- endpoints.MapControllerRoute(
- name: "areas",
- pattern: "{area:exists}/{controller}/{action}/{id?}",
- defaults: new { controller = "Home", action = "Index" });
- endpoints.MapControllerRoute(
- name: "default",
- pattern: "{controller}/{action}/{id?}",
- defaults: new { controller = "Home", action = "Index" });
- endpoints.MapRazorPages();
- });
- app.Run();
|