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

.NET 6 WebAPI含%C2%A0的错误URL返回404,求解决方法

解决带/%C2%A0的错误URL跳转问题(.NET 6 WebAPI)

核心问题说明

URL末尾的%C2%A0是**非断空格(Unicode U+00A0)**的URL编码,ASP.NET Core路由默认会自动解码URL,所以直接用%C2%A0定义路由无法匹配,需要针对解码后的字符处理。


方案一:使用Unicode转义字符匹配路由

直接在路由中用Unicode转义\u00A0表示非断空格,匹配解码后的请求路径:

[HttpGet]
[Route("\u00A0")]
public async Task<IActionResult> RedirectFromInvalidUrl()
{
    // 重定向到正确页面(替换为你的目标路径)
    return RedirectPermanent("/正确的调查页面路径");
}

注意:要确保这个方法的签名和现有无参数Get()方法区分开(比如方法名不同),避免路由冲突。


方案二:用中间件全局捕获并跳转(推荐)

中间件在请求管道最前端执行,不受路由规则限制,适合处理这种特殊URL场景:

  1. 创建自定义中间件类:
public class InvalidUrlRedirectMiddleware
{
    private readonly RequestDelegate _next;

    public InvalidUrlRedirectMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task Invoke(HttpContext context)
    {
        var requestPath = context.Request.Path.Value;
        // 判断解码后的路径是否为非断空格
        if (requestPath.Equals("/\u00A0", StringComparison.Ordinal))
        {
            // 301永久重定向到正确页面
            context.Response.Redirect("/正确的调查页面路径", permanent: true);
            return;
        }

        await _next(context);
    }
}
  1. 在Program.cs中注册中间件(必须放在UseRouting之前):
var app = builder.Build();

// 注册自定义重定向中间件
app.UseMiddleware<InvalidUrlRedirectMiddleware>();

app.UseRouting();
app.UseAuthorization();
app.MapControllers();

app.Run();

方案三:IIS URL重写规则(服务器层面处理)

如果希望在IIS层解决问题,需安装URL Rewrite模块,然后在web.config中添加重写规则:

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Redirect Invalid Space URL" stopProcessing="true">
          <!-- 匹配原始URL编码后的路径 -->
          <match url="^%C2%A0$" />
          <!-- 重定向到正确页面 -->
          <action type="Redirect" url="/正确的调查页面路径" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

测试注意事项

  • 测试时直接使用邮件中的错误URL,不要手动输入空格(手动输入的通常是普通空格U+0020,和目标非断空格不匹配)。
  • 优先选择中间件方案,兼容性更强,不受路由配置限制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:15:38