diff --git a/db/MongoDB/Dicts.js b/db/MongoDB/Dicts.js
index ecb1b09f..0b4d1cd4 100644
--- a/db/MongoDB/Dicts.js
+++ b/db/MongoDB/Dicts.js
@@ -330,6 +330,12 @@
"Code": "0",
"Define": NumberInt(0)
},
+ {
+ "Category": "网站设置",
+ "Name": "健康检查",
+ "Code": "0",
+ "Define": NumberInt(0)
+ },
{
"Category": "网站设置",
"Name": "默认应用程序",
diff --git a/db/MySQL/initData.sql b/db/MySQL/initData.sql
index f3571097..1e179238 100644
--- a/db/MySQL/initData.sql
+++ b/db/MySQL/initData.sql
@@ -45,6 +45,9 @@ INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '自动
-- 是否启用 Blazor 默认为 0 未启用
INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', 'Blazor', '0', 0);
+-- 是否启用 健康检查 默认为 0 未启用 1 启用
+INSERT INTO Dicts (Category, Name, Code, Define) Values ('网站设置', '健康检查', '1', 0);
+
-- 时长单位 月
INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '程序异常保留时长', '1', 0);
INSERT INTO Dicts (Category, Name, Code, Define) VALUES ('网站设置', '操作日志保留时长', '12', 0);
diff --git a/db/Oracle/InitData.sql b/db/Oracle/InitData.sql
index eafda4c1..1d14392a 100644
--- a/db/Oracle/InitData.sql
+++ b/db/Oracle/InitData.sql
@@ -45,6 +45,9 @@ INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVA
-- 是否启用 Blazor 默认为 0 未启用
INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', 'Blazor', '0', 0);
+-- 是否启用 健康检查 默认为 0 未启用 1 启用
+INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', '健康检查', '1', 0);
+
-- 时长单位 月
INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', '程序异常保留时长', '1', 0);
INSERT INTO Dicts (Id, Category, Name, Code, Define) Values (SEQ_DICTS_ID.NEXTVAL, '网站设置', '操作日志保留时长', '12', 0);
diff --git a/db/SQLite/InitData.sql b/db/SQLite/InitData.sql
index 0bd19ea2..34c2d516 100644
--- a/db/SQLite/InitData.sql
+++ b/db/SQLite/InitData.sql
@@ -45,6 +45,9 @@ INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置
-- 是否启用 Blazor 默认为 0 未启用
INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', 'Blazor', '0', 0);
+-- 是否启用 健康检查 默认为 0 未启用 1 启用
+INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', '健康检查', '1', 0);
+
-- 时长单位 月
INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', '程序异常保留时长', '1', 0);
INSERT INTO [Dicts] ([Category], [Name], [Code], [Define]) VALUES ('网站设置', '操作日志保留时长', '12', 0);
diff --git a/db/SqlServer/InitData.sql b/db/SqlServer/InitData.sql
index d82bc482..4de9a43a 100644
--- a/db/SqlServer/InitData.sql
+++ b/db/SqlServer/InitData.sql
@@ -48,6 +48,9 @@ INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设
-- 是否启用 Blazor 默认为 0 未启用
INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设置', N'Blazor', N'0', 0)
+-- 是否启用 健康检查 默认为 0 未启用 1 启用
+INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设置', N'健康检查', N'1', 0);
+
-- 时长单位 月
INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设置', N'程序异常保留时长', '1', 0)
INSERT [dbo].[Dicts] ([Category], [Name], [Code], [Define]) VALUES (N'网站设置', N'操作日志保留时长', '12', 0)
diff --git a/src/admin/Bootstrap.Admin/BootstrapAdmin.db b/src/admin/Bootstrap.Admin/BootstrapAdmin.db
index 6c89075e..d586549c 100644
Binary files a/src/admin/Bootstrap.Admin/BootstrapAdmin.db and b/src/admin/Bootstrap.Admin/BootstrapAdmin.db differ
diff --git a/src/admin/Bootstrap.Admin/Controllers/Api/HealthsController.cs b/src/admin/Bootstrap.Admin/Controllers/Api/HealthsController.cs
index 05ef1440..11521df2 100644
--- a/src/admin/Bootstrap.Admin/Controllers/Api/HealthsController.cs
+++ b/src/admin/Bootstrap.Admin/Controllers/Api/HealthsController.cs
@@ -1,4 +1,5 @@
-using Microsoft.AspNetCore.Authorization;
+using Bootstrap.DataAccess;
+using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using System.Net.Http;
@@ -26,7 +27,7 @@ namespace Bootstrap.Admin.Controllers.Api
{
var ret = false;
var url = config.GetValue("HealthsCloudUrl", "");
- if (!string.IsNullOrEmpty(url))
+ if (!string.IsNullOrEmpty(url) && DictHelper.RetrieveHealth())
{
await httpClient.HttpClient.PostAsJsonAsync(url, message);
ret = true;
diff --git a/src/admin/Bootstrap.Admin/Controllers/Api/TasksController.cs b/src/admin/Bootstrap.Admin/Controllers/Api/TasksController.cs
index dd41429f..47b92541 100644
--- a/src/admin/Bootstrap.Admin/Controllers/Api/TasksController.cs
+++ b/src/admin/Bootstrap.Admin/Controllers/Api/TasksController.cs
@@ -79,7 +79,8 @@ namespace Bootstrap.Admin.Controllers.Api
"超时任务",
"取消任务",
"禁用任务",
- "SQL日志"
+ "SQL日志",
+ "健康检查"
};
///
/// 删除任务方法
diff --git a/src/admin/Bootstrap.Admin/Models/SettingsModel.cs b/src/admin/Bootstrap.Admin/Models/SettingsModel.cs
index c9e189f5..4d164881 100644
--- a/src/admin/Bootstrap.Admin/Models/SettingsModel.cs
+++ b/src/admin/Bootstrap.Admin/Models/SettingsModel.cs
@@ -31,6 +31,7 @@ namespace Bootstrap.Admin.Models
IPCachePeriod = DictHelper.RetrieveLocaleIPSvrCachePeriod();
EnableDemo = DictHelper.RetrieveSystemModel();
AdminPathBase = DictHelper.RetrievePathBase();
+ EnableHealth = DictHelper.RetrieveHealth();
var dicts = DictHelper.RetrieveDicts();
Apps = DictHelper.RetrieveApps().Where(d => !d.Key.Equals("BA", StringComparison.OrdinalIgnoreCase)).Select(k =>
@@ -109,5 +110,10 @@ namespace Bootstrap.Admin.Models
/// 获得/设置 系统应用程序集合
///
public IEnumerable<(string Key, string Name, string Url)> Apps { get; set; }
+
+ ///
+ /// 获得/设置 是否开启健康检查
+ ///
+ public bool EnableHealth { get; set; }
}
}
diff --git a/src/admin/Bootstrap.Admin/Startup.cs b/src/admin/Bootstrap.Admin/Startup.cs
index 63c60422..4ab22d88 100644
--- a/src/admin/Bootstrap.Admin/Startup.cs
+++ b/src/admin/Bootstrap.Admin/Startup.cs
@@ -10,6 +10,7 @@ using Microsoft.AspNetCore.Mvc.Versioning;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
+using Microsoft.Extensions.Diagnostics.HealthChecks;
using Microsoft.Extensions.Hosting;
using System;
@@ -129,7 +130,10 @@ namespace Bootstrap.Admin
{
endpoints.MapHub("/NotiHub");
endpoints.MapHub("/TaskLogHub");
- endpoints.MapBootstrapHealthChecks();
+ endpoints.MapBootstrapHealthChecks("/Healths", configure: op =>
+ {
+ op.Predicate = new Func(reg => DictHelper.RetrieveHealth());
+ });
endpoints.MapBlazorHub();
endpoints.MapFallbackToPage("/_Host");
endpoints.MapDefaultControllerRoute();
diff --git a/src/admin/Bootstrap.Admin/Tasks/TasksExtensions.cs b/src/admin/Bootstrap.Admin/Tasks/TasksExtensions.cs
index 9c5a8c8b..704b5a2d 100644
--- a/src/admin/Bootstrap.Admin/Tasks/TasksExtensions.cs
+++ b/src/admin/Bootstrap.Admin/Tasks/TasksExtensions.cs
@@ -1,4 +1,5 @@
using Bootstrap.DataAccess;
+using Bootstrap.Security;
using Longbow.Tasks;
using Microsoft.Extensions.Hosting;
using System.Linq;
@@ -52,6 +53,16 @@ namespace Microsoft.Extensions.DependencyInjection
// 真实任务负责批次写入数据执行脚本到日志中
TaskServicesManager.GetOrAdd("SQL日志", TriggerBuilder.Build(Cron.Minutely()));
+
+ // 真实人物负责周期性设置健康检查结果开关为开启
+ TaskServicesManager.GetOrAdd("健康检查", token => Task.FromResult(DictHelper.SaveSettings(new BootstrapDict[] {
+ new BootstrapDict() {
+ Category = "网站设置",
+ Name = "健康检查",
+ Code = "1",
+ Define = 0
+ }
+ })), TriggerBuilder.Build(Cron.Minutely(10)));
});
}
}
diff --git a/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml b/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml
index f2c5b581..e66c8979 100644
--- a/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml
+++ b/src/admin/Bootstrap.Admin/Views/Admin/Settings.cshtml
@@ -113,6 +113,10 @@
+
+
+
+