Program.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Microsoft.AspNetCore.Hosting;
  2. using System.Runtime.InteropServices;
  3. using WCS.Core;
  4. using WCS.Core.Redis;
  5. using WCS.WebApi;
  6. using RedisHelper = WCS.Core.Redis.RedisHelper;
  7. namespace WCS.Service
  8. {
  9. public class Program
  10. {
  11. /// <summary>
  12. /// 程序入口
  13. /// </summary>
  14. /// <param name="args"></param>
  15. public static void Main(string[] args)
  16. {
  17. #region 接入Redis
  18. RedisHelper.CreateContext(AppSettings.Config.GetConnectionString("Redis"), "default", true);
  19. #endregion 接入Redis
  20. //互斥锁检测
  21. var mutexName = RedisHelper.Default.Check("Mutex") ?? throw new Exception("请在Redis中配置互斥量值");
  22. using var mt = new Mutex(true, mutexName);
  23. if (mt.WaitOne())
  24. {
  25. CreateHostBuilder(args).Build().Run(); mt.ReleaseMutex();
  26. }
  27. else
  28. {
  29. Console.WriteLine("请勿重复运行");
  30. //InfoLog.INFO_INIT("请勿重复运行");
  31. Task.Delay(2000).Wait();
  32. }
  33. }
  34. /// <summary>
  35. /// 创建一个主机构建器
  36. /// </summary>
  37. /// <param name="args"></param>
  38. /// <returns></returns>
  39. public static IHostBuilder CreateHostBuilder(string[] args)
  40. {
  41. //是否是win平台
  42. var isWin = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
  43. Console.WriteLine($"win:{isWin}");
  44. if (isWin)
  45. {
  46. var useUrls = RedisHelper.Default.Check("UseUrls") ?? throw new Exception("请在Redis中配置网络访问端口");
  47. //"http://*:8080"
  48. return Host.CreateDefaultBuilder(args)
  49. .UseWindowsService()//win
  50. .ConfigureWebHostDefaults(web => //网络访问配置
  51. {
  52. web.UseUrls(useUrls); //设备访问端口
  53. web.UseStartup<Startup>(); //调用启动服务
  54. })
  55. .ConfigureServices((_, services) =>
  56. {
  57. //services.AddDbContext<WCSDB>();
  58. services.AddHostedService<Worker>();
  59. services.AddHttpClient();
  60. });
  61. }
  62. return Host.CreateDefaultBuilder(args)
  63. .UseSystemd()//linux
  64. .ConfigureServices((_, services) =>
  65. {
  66. services.AddHostedService<Worker>();
  67. });
  68. }
  69. }
  70. }