using System; using System.Threading; using System.Threading.Tasks; using Hncore.Infrastructure.Common; using Hncore.Infrastructure.Common.DingTalk; using Hncore.Infrastructure.Extension; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions.Logging; using NLog.Extensions.Logging; namespace Hncore.Infrastructure.WebApi { /// /// 应用程序构建器扩展类 /// /// public static class ApplicationBuilderExtend { /// /// 初始化应用程序构建器 /// /// 当前应用程序构建器对象 /// 日志工厂对象 /// 初始化后的应用程序构建器对象 /// 应用程序生命周期对象 /// public static IApplicationBuilder Init(this IApplicationBuilder app, ILoggerFactory loggerFactory, IApplicationLifetime applicationLifetime) { loggerFactory.AddNLog(); //启用Nlog日志插件 app.UseErrorHandling(); //添加统一错误异常处理中间件(一个自定义类) //启用Cors(跨域请求)支持(默认关闭状态) app.UseCors(builder => builder .SetIsOriginAllowed(host => true) //允许所有来源 .AllowAnyMethod() //允许任何请求方法(GET、POST、PUT、DELETE等) .AllowAnyHeader() //允许任何请求头信息 .AllowCredentials() //允许跨域凭据 // .SetPreflightMaxAge(TimeSpan.FromDays(30)) //指定可以缓存预检请求的响应的时间为30天 .WithExposedHeaders("X-Suggested-Filename", "set-user-token", "set-user") ); app.UseMvc(); //启用MVC //向应用程序生命周期的“应用程序已完全启动”事件注册回调函数 applicationLifetime.ApplicationStarted.Register(OnAppStarted); return app; } /// /// 应用程序完全启动完成处理回调函数 /// /// private static void OnAppStarted() { //if (EnvironmentVariableHelper.IsAspNetCoreProduction) //{ // DingTalkHelper.SendMessage(new MarkDownModel() // { // markdown = new markdown() // { // title = "应用已启动", // text = "### 应用已启动\n\nhostname:" + EnvironmentVariableHelper.HostName + "\n\n" + // DateTime.Now.Format("yyyy-MM-dd HH:mm:ss") // } // }); //} } } }