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

.NET Core环境下用C# Razor获取页面完整URL的方法咨询

在.NET Core中获取页面完整URL的解决办法

嘿,我太懂你这种困惑了——那些老ASP.NET里的Request.Url、HttpContext.Current.Request确实在.NET Core里没法直接用了,不过官方给了更简洁的替代方案,给你整理几个实用的方法:

1. 在Razor视图/页面里直接用(最方便)

.NET Core给HttpRequest加了两个超实用的扩展方法,直接就能拿到完整URL,记得先引用命名空间:

@using Microsoft.AspNetCore.Http
<!-- 获取用户看到的友好格式URL -->
<p>完整URL:@Request.GetDisplayUrl()</p>
<!-- 获取编码后的标准格式URL(比如空格转成%20) -->
<p>编码后URL:@Request.GetEncodedUrl()</p>

这俩方法的区别就是:GetDisplayUrl()返回的是和浏览器地址栏一致的展示型URL,GetEncodedUrl()是符合RFC标准的编码版,适合后端处理用。

2. 在控制器里获取

如果是在控制器逻辑里需要拿URL,直接通过HttpContext.Request调用同样的扩展方法就行:

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;

public class YourController : Controller
{
    public IActionResult YourAction()
    {
        // 获取完整URL
        string fullUrl = HttpContext.Request.GetDisplayUrl();
        // 后续业务逻辑...
        return View();
    }
}

3. 手动拼接(自定义需求场景)

要是你需要手动控制URL的某个部分(比如修改端口、调整路径),可以自己拼接各个组件:

// 从Request里拆解各个部分
var scheme = Request.Scheme; // 比如 "https"
var host = Request.Host; // 比如 "stackoverflow.com" 或者 "localhost:5001"
var path = Request.Path; // 比如 "/questions/ask"
var queryString = Request.QueryString; // 比如 "?param=value"

// 拼接成完整URL
string fullUrl = $"{scheme}://{host}{path}{queryString}";

小提示

这俩扩展方法来自Microsoft.AspNetCore.Http.Extensions包,不过在.NET Core 3.1及以后的Web项目模板里,这个包已经默认引用了,不用额外安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:41:40