WebCoreExtensions.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Microsoft.Extensions.Configuration;
  2. using Microsoft.Extensions.DependencyInjection;
  3. using MS.Common.IDCode;
  4. using System;
  5. namespace MS.WebCore
  6. {
  7. public static class WebCoreExtensions
  8. {
  9. public const string MyAllowSpecificOrigins = "_myAllowSpecificOrigins";
  10. /// <summary>
  11. /// 添加跨域策略,从appsetting中读取配置
  12. /// </summary>
  13. /// <param name="services"></param>
  14. /// <param name="configuration"></param>
  15. /// <returns></returns>
  16. public static IServiceCollection AddCorsPolicy(this IServiceCollection services, IConfiguration configuration)
  17. {
  18. services.AddCors(options =>
  19. {
  20. options.AddPolicy(MyAllowSpecificOrigins,
  21. builder =>
  22. {
  23. builder
  24. .WithOrigins(configuration.GetSection("Startup:Cors:AllowOrigins").Value.Split(','))
  25. .AllowAnyHeader()
  26. .AllowAnyMethod();
  27. });
  28. });
  29. return services;
  30. }
  31. /// <summary>
  32. /// 注册WebCore服务,配置网站
  33. /// do other things
  34. /// </summary>
  35. /// <param name="services"></param>
  36. /// <param name="configuration"></param>
  37. /// <returns></returns>
  38. public static IServiceCollection AddWebCoreService(this IServiceCollection services, IConfiguration configuration)
  39. {
  40. //绑定appsetting中的SiteSetting
  41. services.Configure<SiteSetting>(configuration.GetSection(nameof(SiteSetting)));
  42. #region 单例化雪花算法
  43. string workIdStr = configuration.GetSection("SiteSetting:WorkerId").Value;
  44. string datacenterIdStr = configuration.GetSection("SiteSetting:DataCenterId").Value;
  45. long workId;
  46. long datacenterId;
  47. try
  48. {
  49. workId = long.Parse(workIdStr);
  50. datacenterId = long.Parse(datacenterIdStr);
  51. }
  52. catch (Exception)
  53. {
  54. throw;
  55. }
  56. IdWorker idWorker = new IdWorker(workId, datacenterId);
  57. services.AddSingleton(idWorker);
  58. #endregion
  59. return services;
  60. }
  61. }
  62. }