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

如何在控制器动作方法中获取用户输入的完整带域名URL

获取触发404错误的完整请求URL(控制器中)

前提说明

当用户输入带无效路径的域名触发404时,要在控制器动作里拿到完整URL,需先确保404请求能被路由到自定义错误控制器,而非服务器默认的静态错误页。


1. 配置自定义404错误路由

ASP.NET MVC(非Core)

在web.config中添加自定义错误配置,将404请求指向错误控制器的指定动作:

<system.web>
  <customErrors mode="On" defaultRedirect="~/Error/General">
    <error statusCode="404" redirect="~/Error/NotFound"/>
  </customErrors>
</system.web>

ASP.NET Core

在Startup.cs的Configure方法中,配置状态码页面重定向到错误控制器:

app.UseStatusCodePagesWithReExecute("/Error/{0}");

2. 在错误控制器中获取完整URL

ASP.NET MVC(非Core)

在错误控制器的NotFound动作里,通过Request.Url直接获取包含域名、路径和参数的完整URL:

public ActionResult NotFound()
{
    // 获取浏览器输入的完整URL
    string fullRequestedUrl = Request.Url.AbsoluteUri;
    
    // 可根据需求拆分各部分:域名、路径、查询参数
    // string domain = Request.Url.Host;
    // string pathWithQuery = Request.Url.PathAndQuery;
    // string fullUrl = $"https://{domain}{pathWithQuery}";
    
    // 这里可以添加日志记录或其他业务逻辑
    return View();
}

ASP.NET Core

在错误控制器中,通过Request对象的组合属性拼接完整URL:

public IActionResult NotFound()
{
    // 拼接协议、域名、路径和查询参数,得到完整URL
    string fullRequestedUrl = $"{Request.Scheme}://{Request.Host}{Request.Path}{Request.QueryString}";
    
    // 后续处理逻辑,比如记录日志
    return View();
}

注意事项

  • 如果是IIS托管,需确保IIS的默认404错误页设置被覆盖,避免跳过控制器逻辑。
  • 若使用HTTPS,Request.Scheme会自动识别为https,无需硬编码协议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:25:22