HubProgram.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System.Net;
  2. using CompServ.Hub;
  3. using Microsoft.AspNetCore.Builder;
  4. using Microsoft.AspNetCore.Hosting;
  5. using Microsoft.AspNetCore.Http;
  6. using Microsoft.AspNetCore.Server.Kestrel.Core;
  7. using Microsoft.Extensions.DependencyInjection;
  8. using Microsoft.Extensions.Logging;
  9. using Microsoft.Extensions.Logging.Console;
  10. var builder = WebApplication.CreateBuilder(args);
  11. //控制台日志格式
  12. builder.Services.AddLogging(opt =>
  13. {
  14. opt.AddSimpleConsole(p =>
  15. {
  16. p.TimestampFormat = "[dd HH:mm:ss] ";
  17. p.SingleLine = true;
  18. p.ColorBehavior = LoggerColorBehavior.Enabled;
  19. });
  20. });
  21. builder.Services.Configure<LoggerFilterOptions>(options =>
  22. {
  23. options.AddFilter((category, level) =>
  24. {
  25. if (level == LogLevel.Debug) return false;
  26. if (level == LogLevel.Trace) return false;
  27. if (category == "Microsoft.AspNetCore.Hosting.Diagnostics" && level == LogLevel.Information) return false;
  28. if (category == "Microsoft.AspNetCore.Routing.EndpointMiddleware" && level == LogLevel.Information) return false;
  29. if (category == "Microsoft.AspNetCore.Server.Kestrel" && level == LogLevel.Information) return false;
  30. if (category == "Microsoft.AspNetCore.Server.Kestrel.Http2" && level == LogLevel.Information) return false;
  31. if (category == "Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker" && level == LogLevel.Information) return false;
  32. if (category == "Microsoft.AspNetCore.Mvc.Infrastructure.ContentResultExecutor" && level == LogLevel.Information) return false;
  33. if (category == "Microsoft.AspNetCore.Mvc.Infrastructure.ObjectResultExecutor" && level == LogLevel.Information) return false;
  34. return true; // 其他日志保留
  35. });
  36. });
  37. //配置HTTP1、HTTP2端口
  38. builder.WebHost.UseKestrel((_, kso) =>
  39. {
  40. kso.Listen(new IPEndPoint(IPAddress.Any, 0), lo => lo.Protocols = HttpProtocols.Http2);
  41. kso.Listen(new IPEndPoint(IPAddress.Any, 0), lo => lo.Protocols = HttpProtocols.Http1);
  42. });
  43. builder.Services.AddSingleton<HubWorkerHolder>();
  44. builder.Services.AddHostedService<HubWorkerAssigner>();
  45. builder.Services.AddControllers();
  46. var app = builder.Build();
  47. app.Use(async (context, next) =>
  48. {
  49. context.Request.EnableBuffering(); // this used to be EnableRewind
  50. await next(context);
  51. });
  52. app.MapControllers();
  53. app.MapGet("/", () => "I am hub!");
  54. await app.RunAsync();