From 0a16f276648aedb1996d7dd26462c0a7cf752c19 Mon Sep 17 00:00:00 2001 From: zzh <1368735060@qq.com> Date: Wed, 9 Sep 2026 15:31:54 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=BE=AE=E4=BF=A1=20m?= =?UTF-8?q?p=20=E8=B7=AF=E7=94=B1=20regex=20=E5=AF=BC=E8=87=B4=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=90=AF=E5=8A=A8=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ASP.NET 路由模板中方括号需转义为 [[ ]],否则应用在 InitializeApplication 阶段崩溃。 --- .../WeChatRouteIntegrationTests.cs | 4 +++- src/SimpleAdmin.Api/Auth/AuthService.WeChatMp.cs | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/SimpleAdmin.Api.IntegrationTests/WeChatRouteIntegrationTests.cs b/src/SimpleAdmin.Api.IntegrationTests/WeChatRouteIntegrationTests.cs index 9a412b6..401dc50 100644 --- a/src/SimpleAdmin.Api.IntegrationTests/WeChatRouteIntegrationTests.cs +++ b/src/SimpleAdmin.Api.IntegrationTests/WeChatRouteIntegrationTests.cs @@ -30,7 +30,9 @@ public class WeChatRouteIntegrationTests await using var host = await SimpleAdminApiTestHost.CreateAsync(configureServices: ConfigureWeChatFallback); host.RoutePatterns.Should().Contain("apiwechat/verification"); - host.RoutePatterns.Should().Contain("wechat/mp/{appId:regex(^wx[A-Za-z0-9]+$)}"); + host.RoutePatterns.Should().Contain(p => + p.StartsWith("wechat/mp/{appId:regex(^wx", StringComparison.Ordinal) + && p.EndsWith("+$)}", StringComparison.Ordinal)); host.RoutePatterns.Should().Contain("wechat/mp/login-qrcode"); host.RoutePatterns.Should().Contain("wechat/oauth/config"); host.RoutePatterns.Should().Contain("wechat/mp/follow-qrcode"); diff --git a/src/SimpleAdmin.Api/Auth/AuthService.WeChatMp.cs b/src/SimpleAdmin.Api/Auth/AuthService.WeChatMp.cs index 914cee0..64bce90 100644 --- a/src/SimpleAdmin.Api/Auth/AuthService.WeChatMp.cs +++ b/src/SimpleAdmin.Api/Auth/AuthService.WeChatMp.cs @@ -73,7 +73,7 @@ public partial class AuthService /// appId 仅匹配 wx 开头,避免 login-qrcode / oauth-config 等静态段落入本路由。 /// [AllowAnonymous] - [HttpGet("/wechat/mp/{appId:regex(^wx[A-Za-z0-9]+$)}")] + [HttpGet("/wechat/mp/{appId:regex(^wx[[a-zA-Z0-9]]+$)}")] [Produces("text/plain")] [ApiExplorerSettings(GroupName = "WeChat")] public async Task WeChatValidateAsync( @@ -121,7 +121,7 @@ public partial class AuthService /// 微信消息/事件推送(明文,XML/JSON)。 /// [AllowAnonymous] - [HttpPost("/wechat/mp/{appId:regex(^wx[A-Za-z0-9]+$)}")] + [HttpPost("/wechat/mp/{appId:regex(^wx[[a-zA-Z0-9]]+$)}")] [Consumes("text/xml", "application/xml", "application/json", "text/plain")] [Produces("text/plain", "application/xml")] [ApiExplorerSettings(GroupName = "WeChat")]