简体   繁体   English

Asp.net core 3 Unicode slug url 段作为控制器 HttpGet 操作方法中的参数不接收任何 url 段值

[英]Asp.net core 3 Unicode slug url segment as a parameter in controller HttpGet action method does't receive any url segment value

Here is my Setup.cs

app.UseMvc(routes =>
 {
var rewrite = new RewriteOptions()             
                .AddRewrite(@"category/(\d+)/([\p{L}\p{M}\-]+)", "Home/Category?id=$1&name=$2", skipRemainingRules: true).AddRedirectToHttpsPermanent();
              app.UseRewriter(rewrite);
routes.MapRoute(
                   name: "default",
                   template: "{controller=Home}/{action=Index}/{id?}");

});

Here is my Controller Method这是我的控制器方法

public IActionResult Category(Int32 id, String name, Int32 page = 1)
{


            return Ok(name);
}

When I send request with the following url with Unicode characters it does't work.当我使用以下带有 Unicode 字符的 url 发送请求时,它不起作用。 But work with English characters: https://localhost:15000/category/1/চ াল does't work.但是使用英文字符: https://localhost:15000/category/1/চ াল 不起作用。 But work with https://localhost:15000/category/1/rice但是使用https://localhost:15000/category/1/rice

When i use Unicode slug it does not receive any value in "name" variable but English slug work当我使用 Unicode slug 时,它在“name”变量中没有收到任何值,但英语 slug 可以工作

它是通过在 AddRewrite() 函数中使用 Unicode rang \ঀ-\৿ 而不是 \\p{L}\\p{M} 正则表达式来解决的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM