Host.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using System;
  2. using Microsoft.AspNetCore.Builder;
  3. using Microsoft.AspNetCore.Hosting;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Vit.Extensions;
  6. namespace Vit.WebHost
  7. {
  8. public class Host
  9. {
  10. #region Run
  11. public static void Run(int port = 8888, string rootPath = null, Action<IApplicationBuilder> OnConfigure = null)
  12. {
  13. Run(rootPath, OnConfigure, "http://*:" + port);
  14. }
  15. public static void Run(string rootPath = null, Action<IApplicationBuilder> OnConfigure = null, params string[] urls)
  16. {
  17. Run(new HostRunArg
  18. {
  19. OnConfigure = OnConfigure,
  20. urls = urls,
  21. staticFiles = new StaticFilesConfig { rootPath = rootPath }
  22. });
  23. }
  24. public static void Run(HostRunArg arg)
  25. {
  26. Action<IServiceCollection> OnConfigureServices = null;
  27. Action<IApplicationBuilder> OnConfigure = arg.BeforeConfigure;
  28. #region #1 AllowAnyOrigin
  29. if (arg.allowAnyOrigin)
  30. {
  31. OnConfigureServices += IServiceCollectionExtensions_AllowAnyOrigin.AllowAnyOrigin_ConfigureServices;
  32. OnConfigure += IServiceCollectionExtensions_AllowAnyOrigin.AllowAnyOrigin_Configure;
  33. }
  34. #endregion
  35. #region #2 UseStaticFiles
  36. if (arg.staticFiles != null)
  37. {
  38. OnConfigure += (app) =>
  39. {
  40. app.UseStaticFiles(arg.staticFiles);
  41. };
  42. }
  43. #endregion
  44. #region #3 Build host
  45. OnConfigureServices += arg.OnConfigureServices;
  46. OnConfigure += arg.OnConfigure;
  47. var host =
  48. arg.OnCreateWebHostBuilder()
  49. .UseUrls(arg.urls)
  50. .ConfigureServices(OnConfigureServices)
  51. .Configure(OnConfigure)
  52. .Build();
  53. #endregion
  54. #region #4 Run
  55. if (arg.RunAsync)
  56. {
  57. host.RunAsync();
  58. }
  59. else
  60. {
  61. host.Run();
  62. }
  63. #endregion
  64. }
  65. #endregion
  66. }
  67. }