瀏覽代碼

优化BodyOrDefault逻辑

懒得勤快 6 月之前
父節點
當前提交
c5bcd20ef4

+ 1 - 1
Directory.Build.props

@@ -1,6 +1,6 @@
 <Project>
  <PropertyGroup>
-   <Version>2025.1.7</Version>
+   <Version>2025.1.8</Version>
    <Deterministic>true</Deterministic>
  </PropertyGroup>
 </Project>

+ 20 - 20
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -51,55 +51,55 @@
         <PackageReference Include="AngleSharp.Css" Version="1.0.0-beta.151" />
         <PackageReference Include="DnsClient" Version="1.8.0" />
         <PackageReference Include="Microsoft.CSharp" Version="4.7.0" />
-        <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.2" />
+        <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="9.0.4" />
         <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
-        <PackageReference Include="System.Management" Version="9.0.2" />
+        <PackageReference Include="System.Management" Version="9.0.4" />
         <PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
         <PackageReference Include="SharpCompress" Version="0.39.0" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.0'">
-        <PackageReference Include="Castle.Core" Version="5.1.1" />
+        <PackageReference Include="Castle.Core" Version="5.2.1" />
         <PackageReference Include="IndexRange" Version="1.0.3" />
-        <PackageReference Include="System.Memory" Version="4.6" />
+        <PackageReference Include="System.Memory" Version="4.6.3" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="[1.0.0]" />
         <PackageReference Include="SixLabors.ImageSharp" Version="[2.1.10]" />
-        <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.4" />
         <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
-        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="7.0.0" />
+        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="[7.0.0]" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard2.1'">
-        <PackageReference Include="Castle.Core" Version="5.1.1" />
+        <PackageReference Include="Castle.Core" Version="5.2.1" />
         <PackageReference Include="IndexRange" Version="1.0.3" />
-        <PackageReference Include="System.Memory" Version="4.6" />
+        <PackageReference Include="System.Memory" Version="4.6.3" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="[1.0.0]" />
         <PackageReference Include="SixLabors.ImageSharp" Version="[2.1.10]" />
-        <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.4" />
         <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
-        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="7.0.0" />
+        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="[7.0.0]" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'net6'">
         <PackageReference Include="Castle.Core" Version="5.1.1" />
-        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="7.0.0" />
-        <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
+        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="[7.0.0]" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.4" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.5" />
         <PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'net8'">
-        <PackageReference Include="Castle.Core" Version="5.1.1" />
-        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="8.0.1" />
-        <PackageReference Include="System.Collections.Immutable" Version="8.0.0" />
+        <PackageReference Include="Castle.Core" Version="5.2.1" />
+        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="9.0.4" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.4" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.5" />
         <PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
     </ItemGroup>
 
     <ItemGroup Condition=" '$(TargetFramework)' == 'net9'">
-        <PackageReference Include="Castle.Core" Version="5.1.1" />
-        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="9.0.2" />
-        <PackageReference Include="System.Collections.Immutable" Version="9.0.2" />
+        <PackageReference Include="Castle.Core" Version="5.2.1" />
+        <PackageReference Include="System.Diagnostics.PerformanceCounter" Version="9.0.4" />
+        <PackageReference Include="System.Collections.Immutable" Version="9.0.4" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="2.1.5" />
         <PackageReference Include="SixLabors.ImageSharp" Version="3.1.7" />
     </ItemGroup>
@@ -108,8 +108,8 @@
         <Reference Include="System.Web" />
         <PackageReference Include="Castle.Core" Version="4.4.1" />
         <PackageReference Include="IndexRange" Version="1.0.3" />
-        <PackageReference Include="System.Collections.Immutable" Version="6.0.0" />
-        <PackageReference Include="System.Memory" Version="4.6" />
+        <PackageReference Include="System.Collections.Immutable" Version="[6.0.0]" />
+        <PackageReference Include="System.Memory" Version="[4.6]" />
         <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="[1.0.0]" />
         <PackageReference Include="SixLabors.ImageSharp" Version="[2.1.10]" />
         <PackageReference Include="System.Buffers" version="[4.6]" targetFramework="net461" />

+ 3 - 3
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -44,7 +44,7 @@
 
     <ItemGroup>
         <FrameworkReference Include="Microsoft.AspNetCore.App" />
-        <PackageReference Include="FastExpressionCompiler" Version="5.0.2" />
+        <PackageReference Include="FastExpressionCompiler" Version="5.1.1" />
     </ItemGroup>
 
     <ItemGroup>
@@ -55,12 +55,12 @@
         <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="[3.1.32]" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net9'">
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.2" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.4" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net6'">
         <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.36" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net8'">
-        <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.13" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.15" />
     </ItemGroup>
 </Project>

+ 13 - 5
Masuit.Tools.AspNetCore/ModelBinder/BodyOrDefaultBinderMiddleware.cs

@@ -21,13 +21,21 @@ public sealed class BodyOrDefaultBinderMiddleware(RequestDelegate next, ILogger<
         }
         else
         {
-            var type = new ContentType(contentType);
-            if (!string.IsNullOrWhiteSpace(type.CharSet))
+            try
             {
-                charSet = type.CharSet;
-            }
+                var type = new ContentType(contentType);
+                if (!string.IsNullOrWhiteSpace(type.CharSet))
+                {
+                    charSet = type.CharSet;
+                }
 
-            mediaType = type.MediaType.ToLower();
+                mediaType = type.MediaType.ToLower();
+            }
+            catch (Exception e)
+            {
+                logger.LogError(e, "Parsing contentType failed:" + contentType);
+                mediaType = "multipart/form-data";
+            }
         }
 
         var encoding = Encoding.GetEncoding(charSet);

+ 3 - 2
Masuit.Tools.AspNetCore/ModelBinder/FromBodyOrDefaultModelBinder.cs

@@ -202,7 +202,8 @@ public class FromBodyOrDefaultModelBinder(ILogger<FromBodyOrDefaultModelBinder>
             }
             catch (Exception ex)
             {
-                logger.LogError(ex, ex.Message, context.Request.ContentType);
+                logger.LogError(ex, "Parsing contentType failed:" + context.Request.ContentType);
+                mediaType = "multipart/form-data";
             }
         }
 
@@ -296,4 +297,4 @@ public class FromBodyOrDefaultModelBinder(ILogger<FromBodyOrDefaultModelBinder>
 
         return targetValue;
     }
-}
+}

+ 0 - 20
Masuit.Tools.AspNetCore/ModelBinder/ModelBindingContextExtension.cs

@@ -25,26 +25,6 @@ internal static class ModelBindingContextExtension
         return fieldParameter.GetCustomAttributes(typeof(T), false).Single() as T;
     }
 
-    /// <summary>
-    /// 判断该次请求体Body是否是Json内容类型
-    /// </summary>
-    /// <param name="httpContext"></param>
-    /// <param name="charSet"></param>
-    /// <returns></returns>
-    public static bool IsJsonContent(this HttpContext httpContext, out string charSet)
-    {
-        string strContentType = httpContext.Request.ContentType;
-        if (string.IsNullOrEmpty(strContentType))
-        {
-            charSet = null;
-            return false;
-        }
-
-        var contentType = new ContentType(strContentType);
-        charSet = contentType.CharSet;
-        return contentType.MediaType.ToLower() == "application/json";
-    }
-
     /// <summary>
     /// 获取请求体Body字符串内容
     /// </summary>

+ 2 - 2
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -45,13 +45,13 @@ github:https://github.com/ldqk/Masuit.Tools
         <PackageReference Include="Microsoft.EntityFrameworkCore" Version="[3.1.32]" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net9'">
-        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.2" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.4" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net6'">
         <PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.36" />
     </ItemGroup>
     <ItemGroup Condition=" '$(TargetFramework)' == 'net8'">
-        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.13" />
+        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.15" />
     </ItemGroup>
     <ItemGroup>
       <Compile Remove="..\Masuit.Tools.Abstractions\Mapping\**" />

+ 1 - 1
Masuit.Tools.Excel/Masuit.Tools.Excel.csproj

@@ -37,7 +37,7 @@
       </None>
     </ItemGroup>
     <ItemGroup>
-        <PackageReference Include="EPPlus" Version="7.6.1" />
+        <PackageReference Include="EPPlus" Version="8.0.1" />
         <PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" PrivateAssets="All" />
     </ItemGroup>
     <ItemGroup>

+ 1 - 1
Masuit.Tools.NoSQL.MongoDBClient/Masuit.Tools.NoSQL.MongoDBClient.csproj

@@ -38,7 +38,7 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="MongoDB.Driver" Version="3.2.1" />
+    <PackageReference Include="MongoDB.Driver" Version="3.3.0" />
   </ItemGroup>
 
 </Project>

+ 1 - 1
Masuit.Tools/Masuit.Tools.Net.csproj

@@ -35,7 +35,7 @@
 
     <ItemGroup>
         <PackageReference Include="Microsoft.AspNet.Mvc" Version="5.3.0" />
-        <PackageReference Include="StackExchange.Redis" Version="2.8.24" />
+        <PackageReference Include="StackExchange.Redis" Version="2.8.31" />
         <ProjectReference Include="..\Masuit.Tools.Abstractions\Masuit.Tools.Abstractions.csproj" />
         <Reference Include="System.Web" />
     </ItemGroup>

+ 1 - 1
NetCoreTest/NetCoreTest.csproj

@@ -6,7 +6,7 @@
     <ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="Swashbuckle.AspNetCore" Version="7.3.1" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.1" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Controllers\" />

+ 1 - 1
Test/Masuit.Tools.AspNetCore.ResumeFileResults.WebTest/Masuit.Tools.AspNetCore.ResumeFileResults.WebTest.csproj

@@ -23,7 +23,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Swashbuckle.AspNetCore" Version="7.3.1" />
+    <PackageReference Include="Swashbuckle.AspNetCore" Version="8.1.1" />
   </ItemGroup>
 
   <ItemGroup>

+ 3 - 3
Test/Masuit.Tools.Core.Test/Masuit.Tools.Core.Test.csproj

@@ -9,9 +9,9 @@
   </PropertyGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.2" />
-    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.2" />
-    <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.2" />
+    <PackageReference Include="Microsoft.AspNetCore.TestHost" Version="9.0.4" />
+    <PackageReference Include="Microsoft.EntityFrameworkCore.InMemory" Version="9.0.4" />
+    <PackageReference Include="Microsoft.Extensions.Hosting" Version="9.0.4" />
     <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.13.0" />
     <PackageReference Include="xunit" Version="2.9.3" />
     <PackageReference Include="xunit.runner.visualstudio" Version="3.0.2">

+ 5 - 5
Test/Masuit.Tools.Test/Masuit.Tools.Test.csproj

@@ -94,16 +94,16 @@
       <Version>4.20.72</Version>
     </PackageReference>
     <PackageReference Include="StackExchange.Redis">
-      <Version>2.8.24</Version>
+      <Version>2.8.31</Version>
     </PackageReference>
     <PackageReference Include="System.Runtime.CompilerServices.Unsafe">
-      <Version>6.1.0</Version>
+      <Version>6.1.2</Version>
     </PackageReference>
     <PackageReference Include="System.Threading.Tasks.Extensions">
-      <Version>4.6.0</Version>
+      <Version>4.6.3</Version>
     </PackageReference>
     <PackageReference Include="System.ValueTuple">
-      <Version>4.5.0</Version>
+      <Version>4.6.1</Version>
     </PackageReference>
     <PackageReference Include="xunit">
       <Version>2.9.3</Version>
@@ -112,7 +112,7 @@
       <Version>2.0.3</Version>
     </PackageReference>
     <PackageReference Include="xunit.analyzers">
-      <Version>1.20.0</Version>
+      <Version>1.21.0</Version>
       <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
       <PrivateAssets>all</PrivateAssets>
     </PackageReference>