ASP.NET Core配置Url Rewrite功能不生效,咨询配置是否存在错误
ASP.NET Core Url重写配置错误说明与修正方案
你的配置存在两处可直接导致重写不生效的问题,具体如下:
- 重写目标使用相对路径,缺少前导斜杠
你当前配置的重写目标为restaurant/hello属于相对路径,当你请求/restaurant/123时,重写后路径会拼接为/restaurant/restaurant/hello,无法匹配预期路由,需要改为带前导斜杠的绝对路径/restaurant/hello。 - 冗余使用插值字符串语法
目标路径写法$"restaurant/hello"没有用到任何插值变量,属于无效冗余写法,虽不会直接触发报错,但存在后续维护的潜在风险,直接改为普通字符串即可。
如果你的hello接口需要接收原路径中的数字参数,可通过$1引用正则第一个捕获组的内容,将目标路径调整为"/restaurant/hello?id=$1"即可传递参数。
修正后的代码示例
var options = new RewriteOptions() .AddRewrite(@"^restaurant/(\d+)", "/restaurant/hello", skipRemainingRules: true); app.UseRewriter(options); // 重写中间件放在首位的顺序是正确的,无需调整 app.UseHttpsRedirection(); //app.UseDefaultFiles(); //app.UseStaticFiles(); app.UseFileServer(); app.UseCookiePolicy(); app.UseRequestLocalization(); app.UseRouting();
验证小技巧:如果修改后仍未达预期,可在
app.UseRewriter后添加临时中间件输出重写后的路径,确认重写逻辑是否正常执行:app.Use(async (context, next) => { // 输出重写后的路径到控制台,可按需改为日志输出 System.Diagnostics.Debug.WriteLine($"重写后路径:{context.Request.Path}"); await next(); });
内容的提问来源于stack exchange,提问作者user2981411
相关产品推荐
相关产品推荐

