diff --git a/.github/workflows/KnifeHub-release.yml b/.github/workflows/KnifeHub-release.yml index 0a049ae02..842b8c22d 100644 --- a/.github/workflows/KnifeHub-release.yml +++ b/.github/workflows/KnifeHub-release.yml @@ -44,37 +44,77 @@ jobs: - name: Setup .NET Core uses: actions/setup-dotnet@v1 with: + # TODO: 发现虽安装多个版本, 但 dotnet cli 依然会使用最新版本, + # 用 --framework net6.0 指定, 但最终执行仍然会由 dotnet\sdk\8.0.201 执行 + # 可能只能多个环境容器(不同版本)执行了, 在 GitHub Actions 中可利用 Matrix 多环境 dotnet-version: | 6.0.100 7.0.401 + 8.0.201 - name: Build run: | cd ./src/KnifeHub.Web # win-x64 - dotnet publish --framework net6.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../win-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net6.0-win-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net7.0-win-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime win-x64 -p:PublishSingleFile=true --output ../../net8.0-win-x64 --self-contained true # win-x86 - dotnet publish --framework net6.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../win-x86 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net6.0-win-x86 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net7.0-win-x86 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime win-x86 -p:PublishSingleFile=true --output ../../net8.0-win-x86 --self-contained true # linux-x64 - dotnet publish --framework net6.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../linux-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net6.0-linux-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net7.0-linux-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-x64 -p:PublishSingleFile=true --output ../../net8.0-linux-x64 --self-contained true # linux-arm - dotnet publish --framework net6.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../linux-arm --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net6.0-linux-arm --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net7.0-linux-arm --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-arm -p:PublishSingleFile=true --output ../../net8.0-linux-arm --self-contained true # linux-arm64 - dotnet publish --framework net6.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../linux-arm64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net6.0-linux-arm64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net7.0-linux-arm64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime linux-arm64 -p:PublishSingleFile=true --output ../../net8.0-linux-arm64 --self-contained true # osx-x64 - dotnet publish --framework net6.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../osx-x64 --self-contained true + dotnet publish --framework net6.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net6.0-osx-x64 --self-contained true + dotnet publish --framework net7.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net7.0-osx-x64 --self-contained true + dotnet publish --framework net8.0 --configuration Release --runtime osx-x64 -p:PublishSingleFile=true --output ../../net8.0-osx-x64 --self-contained true # osx.10.10-x64 - dotnet publish --framework net6.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../osx.10.10-x64 --self-contained true + # error NETSDK1083: The specified RuntimeIdentifier 'osx.10.10-x64' is not recognized. See https://aka.ms/netsdk1083 + # dotnet publish --framework net6.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net6.0-osx.10.10-x64 --self-contained true + # dotnet publish --framework net7.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net7.0-osx.10.10-x64 --self-contained true + # dotnet publish --framework net8.0 --configuration Release --runtime osx.10.10-x64 -p:PublishSingleFile=true --output ../../net8.0-osx.10.10-x64 --self-contained true - name: Zip the Build run: | - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip ./win-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip ./win-x86/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip ./linux-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip ./linux-arm/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip ./linux-arm64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip ./osx-x64/ - zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip ./osx.10.10-x64/ + # win-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip ./net6.0-win-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x64.zip ./net7.0-win-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x64.zip ./net8.0-win-x64/ + # win-x86 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip ./net6.0-win-x86/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x86.zip ./net7.0-win-x86/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x86.zip ./net8.0-win-x86/ + # linux-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip ./net6.0-linux-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-x64.zip ./net7.0-linux-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-x64.zip ./net8.0-linux-x64/ + # linux-arm + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip ./net6.0-linux-arm/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm.zip ./net7.0-linux-arm/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm.zip ./net8.0-linux-arm/ + # linux-arm64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip ./net6.0-linux-arm64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm64.zip ./net7.0-linux-arm64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm64.zip ./net8.0-linux-arm64/ + # osx-x64 + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip ./net6.0-osx-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx-x64.zip ./net7.0-osx-x64/ + zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx-x64.zip ./net8.0-osx-x64/ + # osx.10.10-x64 + # zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip ./net6.0-osx.10.10-x64/ + # zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx.10.10-x64.zip ./net7.0-osx.10.10-x64/ + # zip -r KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx.10.10-x64.zip ./net8.0-osx.10.10-x64/ - name: Create temp-release-note.md run: | @@ -95,10 +135,29 @@ jobs: draft: false prerelease: false files: | + # net6.0 KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x64.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-win-x86.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-x64.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-linux-arm64.zip KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx-x64.zip - KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip + # KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net6.0-osx.10.10-x64.zip + # net7.0 + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-win-x86.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-linux-arm64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx-x64.zip + # KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net7.0-osx.10.10-x64.zip + # net8.0 + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-win-x86.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-x64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-linux-arm64.zip + KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx-x64.zip + # KnifeHub-${{ steps.vars.outputs.RELEASE_VERSION }}-net8.0-osx.10.10-x64.zip + README.md + LICENSE diff --git a/.gitignore b/.gitignore index 3993c270b..8097f335e 100644 --- a/.gitignore +++ b/.gitignore @@ -376,6 +376,6 @@ src/KnifeHub.Web/Plugins_wwwroot/ - +*/watchlogs*.db diff --git a/README.md b/README.md index 67dc22441..f927ef8ce 100644 --- a/README.md +++ b/README.md @@ -247,6 +247,7 @@ mkdir -p docker-data/App_Data/ mkdir -p docker-data/Plugins/ mkdir -p docker-data/Plugins_wwwroot/ # 保存当前数据 +docker cp knifehub:/app/appsettings.json docker-data/appsettings.json docker cp knifehub:/app/App_Data/PluginCore.Config.json docker-data/App_Data/PluginCore.Config.json docker cp knifehub:/app/App_Data/plugin.config.json docker-data/App_Data/plugin.config.json docker cp knifehub:/app/Plugins/ docker-data/ @@ -266,6 +267,7 @@ docker run -d --restart=always -p 53213:80 -e ASPNETCORE_URLS="http://*:80" -e A # 这里我将原本备份的数据保存到了这个路径, 进入这个路径, 将备份数据覆盖到 docker 容器中 cd docker-data +docker cp appsettings.json knifehub:/app/appsettings.json docker cp App_Data/PluginCore.Config.json knifehub:/app/App_Data/PluginCore.Config.json docker cp App_Data/plugin.config.json knifehub:/app/App_Data/plugin.config.json docker cp Plugins/ knifehub:/app/ diff --git a/src/KnifeHub.Web/Config/ConfigOptions.cs b/src/KnifeHub.Web/Config/ConfigOptions.cs index d3642df93..19035aaf2 100644 --- a/src/KnifeHub.Web/Config/ConfigOptions.cs +++ b/src/KnifeHub.Web/Config/ConfigOptions.cs @@ -2,10 +2,24 @@ namespace KnifeHub.Web.Config { public class ConfigOptions { - public const string Config = "KnifeHub"; + public const string Config = nameof(KnifeHub); - public bool AllowAllCors { get; set; } + public ConfigOptions() + { + this.Log = new LogModel(); + } + + public bool AllowAllCors { get; set; } = false; public List CorsWhiteList { get; set; } + + public LogModel Log { get; set; } + + public class LogModel + { + public int RetainedFileCountLimit { get; set; } = 31; + + public int RetainedFileTimeLimitDays { get; set; } = 31; + } } -} \ No newline at end of file +} diff --git a/src/KnifeHub.Web/Controllers/HomeController.cs b/src/KnifeHub.Web/Controllers/HomeController.cs index 2587fa204..ddf3cd061 100644 --- a/src/KnifeHub.Web/Controllers/HomeController.cs +++ b/src/KnifeHub.Web/Controllers/HomeController.cs @@ -1,4 +1,4 @@ -using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using PluginCore.Interfaces; using PluginCore.IPlugins; @@ -11,6 +11,10 @@ namespace KnifeHub.Web.Controllers [ApiController] public class HomeController : ControllerBase { + /// + /// 首页 + /// + /// [Route("")] [HttpGet] public async Task Index() diff --git a/src/KnifeHub.Web/Dockerfile b/src/KnifeHub.Web/Dockerfile index e8256a75c..a189d903b 100644 --- a/src/KnifeHub.Web/Dockerfile +++ b/src/KnifeHub.Web/Dockerfile @@ -1,20 +1,20 @@ #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"] COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"] RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj" COPY . . WORKDIR "/src/src/KnifeHub.Web" -RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build +RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build FROM build AS publish -RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish +RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app diff --git a/src/KnifeHub.Web/Dockerfile.amd-chrome b/src/KnifeHub.Web/Dockerfile.amd-chrome index e72ec2cd7..aaae5953a 100644 --- a/src/KnifeHub.Web/Dockerfile.amd-chrome +++ b/src/KnifeHub.Web/Dockerfile.amd-chrome @@ -1,6 +1,6 @@ #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 @@ -40,17 +40,17 @@ RUN apt-get install libnss3-dev -y RUN apt-get install libxcb1 -y # end Selenium -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"] COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"] RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj" COPY . . WORKDIR "/src/src/KnifeHub.Web" -RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build +RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build FROM build AS publish -RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish +RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app diff --git a/src/KnifeHub.Web/Dockerfile.amd-full b/src/KnifeHub.Web/Dockerfile.amd-full index 518c94130..a287d5d57 100644 --- a/src/KnifeHub.Web/Dockerfile.amd-full +++ b/src/KnifeHub.Web/Dockerfile.amd-full @@ -1,6 +1,6 @@ #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging. -FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base WORKDIR /app EXPOSE 80 @@ -40,17 +40,17 @@ RUN apt-get install libnss3-dev -y RUN apt-get install libxcb1 -y # end Selenium -FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build WORKDIR /src COPY ["src/KnifeHub.Web/KnifeHub.Web.csproj", "src/KnifeHub.Web/"] COPY ["src/KnifeHub.Sdk/KnifeHub.Sdk.csproj", "src/KnifeHub.Sdk/"] RUN dotnet restore "src/KnifeHub.Web/KnifeHub.Web.csproj" COPY . . WORKDIR "/src/src/KnifeHub.Web" -RUN dotnet build "KnifeHub.Web.csproj" -c Release -o /app/build +RUN dotnet build --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/build FROM build AS publish -RUN dotnet publish --framework net6.0 "KnifeHub.Web.csproj" -c Release -o /app/publish +RUN dotnet publish --framework net8.0 "KnifeHub.Web.csproj" -c Release -o /app/publish FROM base AS final WORKDIR /app diff --git a/src/KnifeHub.Web/KnifeHub.Web.csproj b/src/KnifeHub.Web/KnifeHub.Web.csproj index 9828226fe..a9eed3aae 100644 --- a/src/KnifeHub.Web/KnifeHub.Web.csproj +++ b/src/KnifeHub.Web/KnifeHub.Web.csproj @@ -1,7 +1,13 @@  - net6.0 + net6.0;net7.0;net8.0 + + + + + + false false enable enable @@ -12,12 +18,16 @@ - 1.6.0 - 1.6.0.0 - 1.6.0.0 + 1.6.2 + 1.6.2.0 + 1.6.2.0 + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + @@ -26,7 +36,7 @@ - + diff --git a/src/KnifeHub.Web/Program.cs b/src/KnifeHub.Web/Program.cs index 170d45336..833ef6fad 100644 --- a/src/KnifeHub.Web/Program.cs +++ b/src/KnifeHub.Web/Program.cs @@ -28,6 +28,14 @@ public class Program public static void Main(string[] args) { + #region 配置选项 + var config = new ConfigurationBuilder() + .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) + .Build(); + ConfigOptions configOptions = new ConfigOptions(); + config.GetSection(ConfigOptions.Config).Bind(configOptions); + #endregion + // https://github.com/serilog/serilog-aspnetcore // https://github.com/serilog/serilog/wiki/Getting-Started // Serilog.AspNetCore 已依赖 Serilog.Sinks.Console , Serilog.Sinks.File @@ -36,8 +44,8 @@ public static void Main(string[] args) .Enrich.FromLogContext() // 使用 FromLogContext 方法启用默认的上下文信息 .WriteTo.Console() .WriteTo.File(path: $"logs/{nameof(KnifeHub)}.txt", rollingInterval: RollingInterval.Day - , retainedFileCountLimit: 31 - , retainedFileTimeLimit: TimeSpan.FromDays(31)) + , retainedFileCountLimit: configOptions?.Log?.RetainedFileCountLimit ?? 31 + , retainedFileTimeLimit: TimeSpan.FromDays(configOptions?.Log?.RetainedFileTimeLimitDays ?? 31)) .CreateLogger(); try @@ -51,24 +59,25 @@ public static void Main(string[] args) string buildTime = AppBuildStampUtil.BuildTime; Log.Information($"Git: {gitBranch} {gitHash}"); Log.Information($"Build: {version} {buildTime}"); + Log.Information(DotNetUtil.ToString()); #endregion { #region 启动参数 for (var i = 0; i < args.Length; i++) { - System.Console.WriteLine($"args[{i}]: {args[i]}"); + Log.Information($"args[{i}]: {args[i]}"); } if (args.Contains("--no-console")) { - System.Console.WriteLine("--no-console: hidden current console window"); + Log.Information("--no-console: hidden current console window"); // 获取控制台窗口句柄 var handle = GetConsoleWindow(); // 隐藏控制台窗口 ShowWindow(handle, SW_HIDE); } // 输出当前平台信息 - Console.WriteLine($"CurrentPlatform: {Utils.OSUtil.PlatformInfo()}"); + Log.Information($"CurrentPlatform: {Utils.OSUtil.PlatformInfo()}"); #endregion var builder = WebApplication.CreateBuilder(args); @@ -77,7 +86,7 @@ public static void Main(string[] args) builder.Host.UseSerilog(); // 配置注入 - ConfigOptions configOptions = builder.Configuration.GetSection(ConfigOptions.Config).Get(); + //ConfigOptions configOptions = builder.Configuration.GetSection(ConfigOptions.Config).Get(); builder.Services.Configure(builder.Configuration.GetSection(ConfigOptions.Config)); #region Sentry @@ -110,12 +119,12 @@ public static void Main(string[] args) #region 跨域配置 if (configOptions.AllowAllCors) { - Console.WriteLine("跨域: AllowAllCors"); + Log.Information("Cors: AllowAllCors"); builder.Services.AddCors(m => m.AddPolicy("AllowAllCors", a => a.AllowAnyOrigin().AllowAnyHeader())); } else { - Console.WriteLine("跨域: AllowedCorsOrigins"); + Log.Information("Cors: AllowedCorsOrigins"); #region CorsWhiteList var corsWhiteList = configOptions.CorsWhiteList; // 所有允许跨域的 Origin @@ -168,12 +177,12 @@ public static void Main(string[] args) if (configOptions.AllowAllCors) { app.UseCors("AllowAllCors"); - Console.WriteLine("AllowAllCors"); + Log.Information("AllowAllCors"); } else { app.UseCors("AllowedCorsOrigins"); - Console.WriteLine("AllowedCorsOrigins"); + Log.Information("AllowedCorsOrigins"); } #endregion diff --git a/src/KnifeHub.Web/Utils/DotNetUtil.cs b/src/KnifeHub.Web/Utils/DotNetUtil.cs new file mode 100644 index 000000000..ee17ac251 --- /dev/null +++ b/src/KnifeHub.Web/Utils/DotNetUtil.cs @@ -0,0 +1,51 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace KnifeHub.Web.Utils +{ + public class DotNetUtil + { + public static string DotNetVersion + { + get + { + string dotNetVersion = + System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription; + + return dotNetVersion; + } + } + + public static string? AspNetCoreFileVersion + { + get + { + var assembly = typeof(Microsoft.AspNetCore.Http.HttpContext).Assembly; + var fileVersionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location); + string? aspNetCoreVersion = fileVersionInfo.FileVersion; + + return aspNetCoreVersion; + } + } + + public static string? AspNetCoreProductVersion + { + get + { + var assembly = typeof(Microsoft.AspNetCore.Http.HttpContext).Assembly; + var fileVersionInfo = System.Diagnostics.FileVersionInfo.GetVersionInfo(assembly.Location); + string? aspNetCoreVersion = fileVersionInfo.ProductVersion; + + return aspNetCoreVersion; + } + } + + public static string ToString() + { + string str = $".NET Version: {DotNetVersion} ASP.NET Core FileVersion: {AspNetCoreFileVersion ?? "null"} ASP.NET Core ProductVersion: {AspNetCoreProductVersion ?? "null"}"; + + return str; + } + } +} diff --git a/src/KnifeHub.Web/appsettings.json b/src/KnifeHub.Web/appsettings.json index 9af20efa4..2b571eb9f 100644 --- a/src/KnifeHub.Web/appsettings.json +++ b/src/KnifeHub.Web/appsettings.json @@ -9,6 +9,10 @@ "AllowedHosts": "*", "KnifeHub": { "AllowAllCors": false, - "CorsWhiteList": [] + "CorsWhiteList": [], + "Log": { + "RetainedFileCountLimit": 31, + "RetainedFileTimeLimitDays": 31 + } } } diff --git a/src/KnifeHub.Web/wwwroot/index.html b/src/KnifeHub.Web/wwwroot/index.html index db5b3e643..46120af02 100644 --- a/src/KnifeHub.Web/wwwroot/index.html +++ b/src/KnifeHub.Web/wwwroot/index.html @@ -2,7 +2,7 @@ - KnifeHub-v1.6.0 + KnifeHub-v1.6.2