Program.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536
  1. // Admin.NET 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
  2. //
  3. // 本项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
  4. //
  5. // 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动!任何基于本项目二次开发而产生的一切法律纠纷和责任,我们不承担任何责任!
  6. // 进程最外层:未观察 Task、AppDomain 未处理异常等(在 Serve 构建主机前注册)
  7. Admin.NET.Web.Entry.GlobalProcessExceptionHandlers.Register();
  8. Serve.Run(RunOptions.Default.AddWebComponent<WebComponent>());
  9. public class WebComponent : IWebComponent
  10. {
  11. public void Load(WebApplicationBuilder builder, ComponentContext componentContext)
  12. {
  13. // 后台服务未处理异常时默认会停止整个 Host;改为记录并继续,避免单点任务拖垮整进程(仍应修复业务异常)
  14. builder.Host.ConfigureHostOptions(options =>
  15. {
  16. options.BackgroundServiceExceptionBehavior = Microsoft.Extensions.Hosting.BackgroundServiceExceptionBehavior.Ignore;
  17. });
  18. // 设置日志过滤
  19. builder.Logging.AddFilter((provider, category, logLevel) =>
  20. {
  21. return !new[] { "Microsoft.Hosting", "Microsoft.AspNetCore" }.Any(u => category.StartsWith(u)) && logLevel >= LogLevel.Information;
  22. });
  23. // 设置接口超时时间和上传大小-Kestrel
  24. builder.WebHost.ConfigureKestrel(u =>
  25. {
  26. u.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(30);
  27. u.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(30);
  28. u.Limits.MaxRequestBodySize = null;
  29. });
  30. }
  31. }