懒得勤快 4 سال پیش
والد
کامیت
47187fabaa

+ 1 - 5
src/Masuit.MyBlogs.Core/Controllers/AdvertisementController.cs

@@ -1,5 +1,4 @@
-using JiebaNet.Segmenter.Common;
-using Masuit.MyBlogs.Core.Common;
+using Masuit.MyBlogs.Core.Common;
 using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Extensions;
 using Masuit.MyBlogs.Core.Infrastructure.Repository;
 using Masuit.MyBlogs.Core.Infrastructure.Repository;
 using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
 using Masuit.MyBlogs.Core.Infrastructure.Services.Interface;
@@ -11,12 +10,9 @@ using Masuit.Tools.Core.Net;
 using Masuit.Tools.Linq;
 using Masuit.Tools.Linq;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.EntityFrameworkCore;
 using Microsoft.EntityFrameworkCore;
-using System;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations;
-using System.Linq;
 using System.Linq.Expressions;
 using System.Linq.Expressions;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
-using System.Threading.Tasks;
 
 
 namespace Masuit.MyBlogs.Core.Controllers
 namespace Masuit.MyBlogs.Core.Controllers
 {
 {

+ 14 - 9
src/Masuit.MyBlogs.Core/Controllers/FileController.cs

@@ -7,15 +7,9 @@ using Masuit.Tools.Files;
 using Masuit.Tools.Logging;
 using Masuit.Tools.Logging;
 using Masuit.Tools.Security;
 using Masuit.Tools.Security;
 using Microsoft.AspNetCore.Authorization;
 using Microsoft.AspNetCore.Authorization;
-using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc;
 using Polly;
 using Polly;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
 using System.Text;
 using System.Text;
-using System.Threading.Tasks;
 
 
 namespace Masuit.MyBlogs.Core.Controllers
 namespace Masuit.MyBlogs.Core.Controllers
 {
 {
@@ -26,8 +20,9 @@ namespace Masuit.MyBlogs.Core.Controllers
     public class FileController : AdminController
     public class FileController : AdminController
     {
     {
         public IWebHostEnvironment HostEnvironment { get; set; }
         public IWebHostEnvironment HostEnvironment { get; set; }
+
         /// <summary>
         /// <summary>
-        /// 
+        ///
         /// </summary>
         /// </summary>
         public ISevenZipCompressor SevenZipCompressor { get; set; }
         public ISevenZipCompressor SevenZipCompressor { get; set; }
 
 
@@ -131,6 +126,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                         type = "file"
                         type = "file"
                     })));
                     })));
                     break;
                     break;
+
                 case "remove":
                 case "remove":
                     req.Items.ForEach(s =>
                     req.Items.ForEach(s =>
                     {
                     {
@@ -149,6 +145,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                         success = "true"
                         success = "true"
                     });
                     });
                     break;
                     break;
+
                 case "rename":
                 case "rename":
                 case "move":
                 case "move":
                     string newpath;
                     string newpath;
@@ -185,6 +182,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                         success = "true"
                         success = "true"
                     });
                     });
                     break;
                     break;
+
                 case "copy":
                 case "copy":
                     if (!string.IsNullOrEmpty(req.Item))
                     if (!string.IsNullOrEmpty(req.Item))
                     {
                     {
@@ -200,6 +198,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                         success = "true"
                         success = "true"
                     });
                     });
                     break;
                     break;
+
                 case "edit":
                 case "edit":
                     new FileInfo(Path.Combine(root, req.Item.TrimStart('\\', '/'))).ShareReadWrite().WriteAllText(req.Content, Encoding.UTF8);
                     new FileInfo(Path.Combine(root, req.Item.TrimStart('\\', '/'))).ShareReadWrite().WriteAllText(req.Content, Encoding.UTF8);
                     list.Add(new
                     list.Add(new
@@ -207,20 +206,25 @@ namespace Masuit.MyBlogs.Core.Controllers
                         success = "true"
                         success = "true"
                     });
                     });
                     break;
                     break;
+
                 case "getContent":
                 case "getContent":
                     return Json(new
                     return Json(new
                     {
                     {
                         result = new FileInfo(Path.Combine(root, req.Item.TrimStart('\\', '/'))).ShareReadWrite().ReadAllText(Encoding.UTF8)
                         result = new FileInfo(Path.Combine(root, req.Item.TrimStart('\\', '/'))).ShareReadWrite().ReadAllText(Encoding.UTF8)
                     });
                     });
+
                 case "createFolder":
                 case "createFolder":
                     list.Add(new
                     list.Add(new
                     {
                     {
                         success = Directory.CreateDirectory(Path.Combine(root, req.NewPath.TrimStart('\\', '/'))).Exists.ToString()
                         success = Directory.CreateDirectory(Path.Combine(root, req.NewPath.TrimStart('\\', '/'))).Exists.ToString()
                     });
                     });
                     break;
                     break;
+
                 case "changePermissions":
                 case "changePermissions":
+
                     //todo:文件权限修改
                     //todo:文件权限修改
                     break;
                     break;
+
                 case "compress":
                 case "compress":
                     var filename = Path.Combine(Path.Combine(root, req.Destination.TrimStart('\\', '/')), Path.GetFileNameWithoutExtension(req.CompressedFilename) + ".zip");
                     var filename = Path.Combine(Path.Combine(root, req.Destination.TrimStart('\\', '/')), Path.GetFileNameWithoutExtension(req.CompressedFilename) + ".zip");
                     SevenZipCompressor.Zip(req.Items.Select(s => Path.Combine(root, s.TrimStart('\\', '/'))), filename);
                     SevenZipCompressor.Zip(req.Items.Select(s => Path.Combine(root, s.TrimStart('\\', '/'))), filename);
@@ -229,10 +233,11 @@ namespace Masuit.MyBlogs.Core.Controllers
                         success = "true"
                         success = "true"
                     });
                     });
                     break;
                     break;
+
                 case "extract":
                 case "extract":
                     var folder = Path.Combine(Path.Combine(root, req.Destination.TrimStart('\\', '/')), req.FolderName.Trim('/', '\\'));
                     var folder = Path.Combine(Path.Combine(root, req.Destination.TrimStart('\\', '/')), req.FolderName.Trim('/', '\\'));
                     var zip = Path.Combine(root, req.Item.TrimStart('\\', '/'));
                     var zip = Path.Combine(root, req.Item.TrimStart('\\', '/'));
-                    SevenZipCompressor.Extract(zip, folder);
+                    SevenZipCompressor.Decompress(zip, folder);
                     list.Add(new
                     list.Add(new
                     {
                     {
                         success = "true"
                         success = "true"
@@ -293,4 +298,4 @@ namespace Masuit.MyBlogs.Core.Controllers
             throw new NotFoundException("文件未找到");
             throw new NotFoundException("文件未找到");
         }
         }
     }
     }
-}
+}

+ 5 - 4
src/Masuit.MyBlogs.Core/Controllers/UploadController.cs

@@ -87,7 +87,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Content = html
                 Content = html
             });
             });
         }
         }
-        private async Task<string> ConvertToHtml(IFormFile file)
+        private static async Task<string> ConvertToHtml(IFormFile file)
         {
         {
             var docfile = Path.Combine(Environment.GetEnvironmentVariable("temp") ?? "upload", file.FileName);
             var docfile = Path.Combine(Environment.GetEnvironmentVariable("temp") ?? "upload", file.FileName);
             try
             try
@@ -152,7 +152,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                 Directory.CreateDirectory(dir);
                 Directory.CreateDirectory(dir);
                 await using var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                 await using var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                 await image.CopyToAsync(fs);
                 await image.CopyToAsync(fs);
-                img.Attributes["src"].Value = path.Substring(HostEnvironment.WebRootPath.Length).Replace("\\", "/");
+                img.Attributes["src"].Value = path[HostEnvironment.WebRootPath.Length..].Replace("\\", "/");
             }
             }
 
 
             return body.InnerHtml.HtmlSantinizerStandard().HtmlSantinizerCustom(attributes: new[] { "dir", "lang" });
             return body.InnerHtml.HtmlSantinizerStandard().HtmlSantinizerCustom(attributes: new[] { "dir", "lang" });
@@ -260,6 +260,7 @@ namespace Masuit.MyBlogs.Core.Controllers
         /// </summary>
         /// </summary>
         /// <param name="imagebedClient"></param>
         /// <param name="imagebedClient"></param>
         /// <param name="file"></param>
         /// <param name="file"></param>
+        /// <param name="cancellationToken"></param>
         /// <returns></returns>
         /// <returns></returns>
         [HttpPost("upload"), ApiExplorerSettings(IgnoreApi = false)]
         [HttpPost("upload"), ApiExplorerSettings(IgnoreApi = false)]
         public async Task<ActionResult> UploadFile([FromServices] ImagebedClient imagebedClient, IFormFile file, CancellationToken cancellationToken)
         public async Task<ActionResult> UploadFile([FromServices] ImagebedClient imagebedClient, IFormFile file, CancellationToken cancellationToken)
@@ -282,7 +283,7 @@ namespace Masuit.MyBlogs.Core.Controllers
                         var dir = Path.GetDirectoryName(path);
                         var dir = Path.GetDirectoryName(path);
                         Directory.CreateDirectory(dir);
                         Directory.CreateDirectory(dir);
                         await using var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
                         await using var fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite);
-                        await file.CopyToAsync(fs);
+                        await file.CopyToAsync(fs,CancellationToken.None);
                         break;
                         break;
                     }
                     }
                 case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
                 case var _ when file.ContentType.StartsWith("audio") || file.ContentType.StartsWith("video"):
@@ -298,7 +299,7 @@ namespace Masuit.MyBlogs.Core.Controllers
             try
             try
             {
             {
                 await SaveFile(file, path);
                 await SaveFile(file, path);
-                return ResultData(path.Substring(HostEnvironment.WebRootPath.Length).Replace("\\", "/"));
+                return ResultData(path[HostEnvironment.WebRootPath.Length..].Replace("\\", "/"));
             }
             }
             catch (Exception e)
             catch (Exception e)
             {
             {

+ 1 - 5
src/Masuit.MyBlogs.Core/Extensions/MiddlewareExtension.cs

@@ -3,22 +3,18 @@ using AutoMapper.Extensions.ExpressionMapping;
 using CacheManager.Core;
 using CacheManager.Core;
 using Masuit.MyBlogs.Core.Configs;
 using Masuit.MyBlogs.Core.Configs;
 using Masuit.Tools.AspNetCore.Mime;
 using Masuit.Tools.AspNetCore.Mime;
-using Microsoft.AspNetCore.Builder;
-using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.Filters;
 using Microsoft.AspNetCore.Mvc.Filters;
 using Microsoft.AspNetCore.ResponseCompression;
 using Microsoft.AspNetCore.ResponseCompression;
-using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.WebEncoders;
 using Microsoft.Extensions.WebEncoders;
 using Microsoft.Net.Http.Headers;
 using Microsoft.Net.Http.Headers;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
 using Newtonsoft.Json.Serialization;
 using Newtonsoft.Json.Serialization;
-using System;
 using System.IO.Compression;
 using System.IO.Compression;
-using System.Linq;
 using System.Reflection;
 using System.Reflection;
 using System.Text.Encodings.Web;
 using System.Text.Encodings.Web;
 using System.Text.Unicode;
 using System.Text.Unicode;
+using ConfigurationBuilder = CacheManager.Core.ConfigurationBuilder;
 
 
 namespace Masuit.MyBlogs.Core.Extensions
 namespace Masuit.MyBlogs.Core.Extensions
 {
 {

+ 4 - 4
src/Masuit.MyBlogs.Core/Infrastructure/Drive/DriveAccountService.cs

@@ -43,7 +43,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         /// <returns></returns>
         /// <returns></returns>
         public async Task AddSiteId(string siteName, string nickName)
         public async Task AddSiteId(string siteName, string nickName)
         {
         {
-            Site site = new Site();
+            Site site = new();
             //使用 Onedrive
             //使用 Onedrive
             if (siteName == "onedrive")
             if (siteName == "onedrive")
             {
             {
@@ -52,7 +52,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
             }
             }
             else
             else
             {
             {
-                using HttpClient httpClient = new HttpClient
+                using var httpClient = new HttpClient
                 {
                 {
                     Timeout = TimeSpan.FromSeconds(20)
                     Timeout = TimeSpan.FromSeconds(20)
                 };
                 };
@@ -67,7 +67,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
             if (!SiteContext.Sites.Any(s => s.SiteId == site.SiteId))
             if (!SiteContext.Sites.Any(s => s.SiteId == site.SiteId))
             {
             {
                 //若是首次添加则设置为默认的驱动器
                 //若是首次添加则设置为默认的驱动器
-                using (SettingService setting = new SettingService(new DriveContext()))
+                using (var setting = new SettingService(new DriveContext()))
                 {
                 {
                     if (!SiteContext.Sites.Any())
                     if (!SiteContext.Sites.Any())
                     {
                     {
@@ -95,7 +95,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         /// <returns></returns>
         /// <returns></returns>
         public async Task<List<DriveInfo>> GetDriveInfo()
         public async Task<List<DriveInfo>> GetDriveInfo()
         {
         {
-            List<DriveInfo> drivesInfo = new List<DriveInfo>();
+            var drivesInfo = new List<DriveInfo>();
             foreach (var item in SiteContext.Sites.ToArray())
             foreach (var item in SiteContext.Sites.ToArray())
             {
             {
                 Microsoft.Graph.Drive drive;
                 Microsoft.Graph.Drive drive;

+ 1 - 1
src/Masuit.MyBlogs.Core/Infrastructure/Drive/IDriveAccountService.cs

@@ -37,7 +37,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         /// 获取驱动器信息
         /// 获取驱动器信息
         /// </summary>
         /// </summary>
         /// <returns></returns>
         /// <returns></returns>
-        public Task<List<DriveInfo>> GetDriveInfo();
+        public Task<List<DriveAccountService.DriveInfo>> GetDriveInfo();
 
 
         /// <summary>
         /// <summary>
         /// 解除绑定
         /// 解除绑定

+ 1 - 1
src/Masuit.MyBlogs.Core/Infrastructure/Drive/TokenService.cs

@@ -84,7 +84,7 @@ namespace Masuit.MyBlogs.Core.Infrastructure.Drive
         /// <returns></returns>
         /// <returns></returns>
         public async Task<AuthenticationResult> Authorize(string code)
         public async Task<AuthenticationResult> Authorize(string code)
         {
         {
-            AuthorizationCodeProvider authorizationCodeProvider = new AuthorizationCodeProvider(app);
+            var authorizationCodeProvider = new AuthorizationCodeProvider(app);
             authorizeResult = await authorizationCodeProvider.ClientApplication.AcquireTokenByAuthorizationCode(OneDriveConfiguration.Scopes, code).ExecuteAsync();
             authorizeResult = await authorizationCodeProvider.ClientApplication.AcquireTokenByAuthorizationCode(OneDriveConfiguration.Scopes, code).ExecuteAsync();
             return authorizeResult;
             return authorizeResult;
         }
         }

+ 2 - 5
src/Masuit.MyBlogs.Core/Infrastructure/Services/PostService.cs

@@ -1,4 +1,5 @@
-using CacheManager.Core;
+using System.Linq;
+using CacheManager.Core;
 using Masuit.LuceneEFCore.SearchEngine;
 using Masuit.LuceneEFCore.SearchEngine;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.LuceneEFCore.SearchEngine.Interfaces;
 using Masuit.MyBlogs.Core.Infrastructure.Repository.Interface;
 using Masuit.MyBlogs.Core.Infrastructure.Repository.Interface;
@@ -11,13 +12,9 @@ using Masuit.Tools;
 using Masuit.Tools.Html;
 using Masuit.Tools.Html;
 using PanGu;
 using PanGu;
 using PanGu.HighLight;
 using PanGu.HighLight;
-using System;
-using System.Collections.Generic;
-using System.Linq;
 using System.Linq.Expressions;
 using System.Linq.Expressions;
 using System.Reflection;
 using System.Reflection;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
-using System.Threading.Tasks;
 
 
 namespace Masuit.MyBlogs.Core.Infrastructure.Services
 namespace Masuit.MyBlogs.Core.Infrastructure.Services
 {
 {

+ 20 - 8
src/Masuit.MyBlogs.Core/Masuit.MyBlogs.Core.csproj

@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk.Web">
 <Project Sdk="Microsoft.NET.Sdk.Web">
 
 
     <PropertyGroup>
     <PropertyGroup>
-        <TargetFramework>net5.0</TargetFramework>
+        <TargetFramework>net6.0</TargetFramework>
         <ServerGarbageCollection>true</ServerGarbageCollection>
         <ServerGarbageCollection>true</ServerGarbageCollection>
         <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
         <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection>
         <Authors>懒得勤快</Authors>
         <Authors>懒得勤快</Authors>
@@ -9,16 +9,28 @@
         <Description>masuit.com</Description>
         <Description>masuit.com</Description>
         <Copyright>懒得勤快</Copyright>
         <Copyright>懒得勤快</Copyright>
         <NeutralLanguage>zh-CN</NeutralLanguage>
         <NeutralLanguage>zh-CN</NeutralLanguage>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <SignAssembly>False</SignAssembly>
+        <PackageReadmeFile>README.md</PackageReadmeFile>
     </PropertyGroup>
     </PropertyGroup>
 
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+      <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
     </PropertyGroup>
     </PropertyGroup>
 
 
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
     <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
       <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+      <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
     </PropertyGroup>
     </PropertyGroup>
 
 
+    <ItemGroup>
+      <None Include="..\..\README.md">
+        <Pack>True</Pack>
+        <PackagePath>\</PackagePath>
+      </None>
+    </ItemGroup>
+
     <ItemGroup>
     <ItemGroup>
         <ProjectReference Include="..\..\..\Masuit.LuceneEFCore.SearchEngine\Masuit.LuceneEFCore.SearchEngine\Masuit.LuceneEFCore.SearchEngine.csproj" />
         <ProjectReference Include="..\..\..\Masuit.LuceneEFCore.SearchEngine\Masuit.LuceneEFCore.SearchEngine\Masuit.LuceneEFCore.SearchEngine.csproj" />
         <ProjectReference Include="..\..\..\Masuit.Tools\Masuit.Tools.Core\Masuit.Tools.Core.csproj" />
         <ProjectReference Include="..\..\..\Masuit.Tools\Masuit.Tools.Core\Masuit.Tools.Core.csproj" />
@@ -40,21 +52,21 @@
         <PackageReference Include="IP2Region" Version="1.2.0" />
         <PackageReference Include="IP2Region" Version="1.2.0" />
         <PackageReference Include="Karambolo.AspNetCore.Bundling.NUglify" Version="3.5.0" />
         <PackageReference Include="Karambolo.AspNetCore.Bundling.NUglify" Version="3.5.0" />
         <PackageReference Include="MaxMind.GeoIP2" Version="4.0.1" />
         <PackageReference Include="MaxMind.GeoIP2" Version="4.0.1" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.11" />
-        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.11" />
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.11" />
-        <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="5.0.1" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="6.0.0" />
+        <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="6.0.0" />
+        <PackageReference Include="Microsoft.Extensions.Http.Polly" Version="6.0.0" />
         <PackageReference Include="Microsoft.Graph" Version="4.9.0" />
         <PackageReference Include="Microsoft.Graph" Version="4.9.0" />
-        <PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.6" />
+        <PackageReference Include="Microsoft.Graph.Auth" Version="1.0.0-preview.7" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
         <PackageReference Include="MiniProfiler.AspNetCore.Mvc" Version="4.2.22" />
         <PackageReference Include="OpenXmlPowerTools-NetStandard" Version="4.4.21" />
         <PackageReference Include="OpenXmlPowerTools-NetStandard" Version="4.4.21" />
         <PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.2.22" />
         <PackageReference Include="MiniProfiler.EntityFrameworkCore" Version="4.2.22" />
         <PackageReference Include="PanGu.HighLight" Version="1.0.0" />
         <PackageReference Include="PanGu.HighLight" Version="1.0.0" />
-        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="5.0.2" />
+        <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="6.0.0-rc.1" />
         <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.13" />
         <PackageReference Include="System.Linq.Dynamic.Core" Version="1.2.13" />
         <PackageReference Include="TimeZoneConverter" Version="3.5.0" />
         <PackageReference Include="TimeZoneConverter" Version="3.5.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
         <PackageReference Include="WilderMinds.RssSyndication" Version="1.7.0" />
-        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="5.2.17" />
+        <PackageReference Include="Z.EntityFramework.Plus.EFCore" Version="6.13.0" />
     </ItemGroup>
     </ItemGroup>
     <ItemGroup>
     <ItemGroup>
         <Content Update="appsettings.json">
         <Content Update="appsettings.json">

+ 7 - 1
src/Masuit.MyBlogs.Core/PrepareStartup.cs

@@ -104,7 +104,13 @@ namespace Masuit.MyBlogs.Core
                     c.Result = RuleResult.EndResponse;
                     c.Result = RuleResult.EndResponse;
                     c.HttpContext.Response.Redirect("/tag/" + HttpUtility.UrlEncode(c.HttpContext.Request.Query["tag"]), true);
                     c.HttpContext.Response.Redirect("/tag/" + HttpUtility.UrlEncode(c.HttpContext.Request.Query["tag"]), true);
                 }
                 }
-            }).AddRewrite(@"\w+/_blazor(.*)", "_blazor$1", true);
+
+                if ((c.HttpContext.Request.Path.Equals("/search") || c.HttpContext.Request.Path.Equals("/s"))&&c.HttpContext.Request.Query.ContainsKey("wd"))
+                {
+                    c.Result = RuleResult.EndResponse;
+                    c.HttpContext.Response.Redirect("/search/" + HttpUtility.UrlEncode(c.HttpContext.Request.Query["wd"]), true);
+                }
+            }).AddRewrite(@"\w+/_blazor(.*)", "_blazor$1", false);
             switch (config["UseRewriter"])
             switch (config["UseRewriter"])
             {
             {
                 case "NonWww":
                 case "NonWww":

+ 40 - 53
src/Masuit.MyBlogs.Core/Program.cs

@@ -1,71 +1,58 @@
 using Autofac.Extensions.DependencyInjection;
 using Autofac.Extensions.DependencyInjection;
+using Masuit.MyBlogs.Core;
 using Masuit.MyBlogs.Core.Common;
 using Masuit.MyBlogs.Core.Common;
 using Masuit.MyBlogs.Core.Extensions.DriveHelpers;
 using Masuit.MyBlogs.Core.Extensions.DriveHelpers;
 using Masuit.MyBlogs.Core.Infrastructure;
 using Masuit.MyBlogs.Core.Infrastructure;
 using Masuit.MyBlogs.Core.Infrastructure.Drive;
 using Masuit.MyBlogs.Core.Infrastructure.Drive;
 using Masuit.Tools;
 using Masuit.Tools;
-using Microsoft.AspNetCore.Hosting;
 using Microsoft.AspNetCore.Server.Kestrel.Core;
 using Microsoft.AspNetCore.Server.Kestrel.Core;
-using Microsoft.Extensions.Configuration;
-using Microsoft.Extensions.DependencyInjection;
-using Microsoft.Extensions.Hosting;
-using System;
-using System.IO;
 
 
-namespace Masuit.MyBlogs.Core
+if (!"223.5.5.5".GetIPLocation().Contains("阿里"))
 {
 {
-    public class Program
+    throw new Exception("IP地址库初始化失败,请重启应用!");
+}
+
+InitOneDrive();
+PerfCounter.Init();
+CreateWebHostBuilder(args).Build().Run();
+
+static IHostBuilder CreateWebHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureWebHostDefaults(hostBuilder => hostBuilder.UseKestrel(opt =>
+{
+    var config = opt.ApplicationServices.GetService<IConfiguration>();
+    var port = config["Port"] ?? "5000";
+    var sslport = config["Https:Port"] ?? "5001";
+    opt.ListenAnyIP(port.ToInt32());
+    if (bool.Parse(config["Https:Enabled"]))
     {
     {
-        public static void Main(string[] args)
+        opt.ListenAnyIP(sslport.ToInt32(), s =>
         {
         {
-            if (!"223.5.5.5".GetIPLocation().Contains("阿里"))
+            if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major >= 10)
             {
             {
-                throw new Exception("IP地址库初始化失败,请重启应用!");
+                s.Protocols = HttpProtocols.Http1AndHttp2;
             }
             }
-            
-            InitOneDrive();
-            PerfCounter.Init();
-            CreateWebHostBuilder(args).Build().Run();
-        }
 
 
-        public static IHostBuilder CreateWebHostBuilder(string[] args) => Host.CreateDefaultBuilder(args).UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureWebHostDefaults(hostBuilder => hostBuilder.UseKestrel(opt =>
-        {
-            var config = opt.ApplicationServices.GetService<IConfiguration>();
-            var port = config["Port"] ?? "5000";
-            var sslport = config["Https:Port"] ?? "5001";
-            opt.ListenAnyIP(port.ToInt32());
-            if (bool.Parse(config["Https:Enabled"]))
-            {
-                opt.ListenAnyIP(sslport.ToInt32(), s =>
-                {
-                    if (Environment.OSVersion.Platform == PlatformID.Win32NT && Environment.OSVersion.Version.Major >= 10)
-                    {
-                        s.Protocols = HttpProtocols.Http1AndHttp2;
-                    }
-                    s.UseHttps(AppContext.BaseDirectory + config["Https:CertPath"], config["Https:CertPassword"]);
-                });
-            }
+            s.UseHttps(AppContext.BaseDirectory + config["Https:CertPath"], config["Https:CertPassword"]);
+        });
+    }
 
 
-            opt.Limits.MaxRequestBodySize = null;
-            Console.WriteLine($"应用程序监听端口:http:{port},https:{sslport}");
-        }).UseStartup<Startup>());
+    opt.Limits.MaxRequestBodySize = null;
+    Console.WriteLine($"应用程序监听端口:http:{port},https:{sslport}");
+}).UseStartup<Startup>());
 
 
-        public static void InitOneDrive()
-        {
-            //初始化
-            if (!File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "App_Data", "OneDrive.db")))
-            {
-                File.Copy("App_Data\\OneDrive.template.db", "App_Data\\OneDrive.db");
-                Console.WriteLine("数据库创建成功");
-            }
+static void InitOneDrive()
+{
+    //初始化
+    if (!File.Exists(Path.Combine(Directory.GetCurrentDirectory(), "App_Data", "OneDrive.db")))
+    {
+        File.Copy("App_Data\\OneDrive.template.db", "App_Data\\OneDrive.db");
+        Console.WriteLine("数据库创建成功");
+    }
 
 
-            using SettingService settingService = new SettingService(new DriveContext());
-            if (settingService.Get("IsInit") != "true")
-            {
-                settingService.Set("IsInit", "true").Wait();
-                Console.WriteLine("数据初始化成功");
-                Console.WriteLine($"请登录 {OneDriveConfiguration.BaseUri}/#/admin 进行身份及其他配置");
-            }
-        }
+    using var settingService = new SettingService(new DriveContext());
+    if (settingService.Get("IsInit") != "true")
+    {
+        settingService.Set("IsInit", "true").Wait();
+        Console.WriteLine("数据初始化成功");
+        Console.WriteLine($"请登录 {OneDriveConfiguration.BaseUri}/#/admin 进行身份及其他配置");
     }
     }
-}
+}

+ 1 - 1
src/Masuit.MyBlogs.Core/Properties/PublishProfiles/FolderProfile.pubxml

@@ -12,7 +12,7 @@
     <SiteUrlToLaunchAfterPublish />
     <SiteUrlToLaunchAfterPublish />
     <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
     <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
     <ExcludeApp_Data>False</ExcludeApp_Data>
     <ExcludeApp_Data>False</ExcludeApp_Data>
-    <TargetFramework>net5.0</TargetFramework>
+    <TargetFramework>net6.0</TargetFramework>
     <ProjectGuid>2f8270e4-5e57-4ce4-ab5f-8008f9fc8c7c</ProjectGuid>
     <ProjectGuid>2f8270e4-5e57-4ce4-ab5f-8008f9fc8c7c</ProjectGuid>
     <SelfContained>false</SelfContained>
     <SelfContained>false</SelfContained>
     <publishUrl>bin\Release\publish\</publishUrl>
     <publishUrl>bin\Release\publish\</publishUrl>

+ 1 - 1
src/Masuit.MyBlogs.Core/Views/Post/PostVisitRecordInsight.cshtml

@@ -109,7 +109,7 @@
             },
             },
             title: {
             title: {
                 left: 'center',
                 left: 'center',
-                text: '最近90天访问趋势'
+                text: '最近90天访问趋势,日均:' + (res.reduce((acr, cur) => acr + cur.Count, 0) / (new Date() - new Date(res[0].Date)) * (1000 * 60 * 60 * 24)).toFixed(2)
             },
             },
             xAxis: {
             xAxis: {
                 type: 'time',
                 type: 'time',