You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将ASP.NET的中止请求重写规则转换为.NET Core版本

解决方法

.NET Core 重写中间件的AddRewrite方法仅用于路径替换逻辑,没有内置对应IIS AbortRequest的终止请求能力,你可以通过自定义重写规则实现需求:

代码实现(直接写在Program.cs中即可)

var rewriteOptions = new RewriteOptions()
    .Add(rewriteContext =>
    {
        var requestUrl = rewriteContext.HttpContext.Request.Path.Value;
        // 代入你需要匹配的正则规则
        if (Regex.IsMatch(requestUrl, @"([^\?].?.$)|([^\?].*~$)"))
        {
            // 直接终止HTTP连接,和原IIS规则AbortRequest效果完全一致
            rewriteContext.HttpContext.Abort();
            // 标记规则处理完成,不再执行后续重写规则和其他中间件
            rewriteContext.Result = RuleResult.EndResponse;
        }
    });

// 注意:UseRewriter要放在UseRouting、UseStaticFiles等中间件之前注册
app.UseRewriter(rewriteOptions);

补充说明

  • 如果编译报错找不到Regex类,需要补引用命名空间:using System.Text.RegularExpressions;
  • 如果不需要直接断开连接,也可以选择返回指定状态码(比如403/404),修改规则逻辑即可:
if (Regex.IsMatch(requestUrl, @"([^\?].?.$)|([^\?].*~$)"))
{
    rewriteContext.HttpContext.Response.StatusCode = StatusCodes.Status403Forbidden;
    rewriteContext.Result = RuleResult.EndResponse;
}
  • 你当前贴的正则规则未包含波浪符的匹配逻辑,请根据实际拦截需求调整正则表达式,避免误拦截正常请求。

内容的提问来源于stack exchange,提问作者LukePerrin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:36:08