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

在.NET 8中如何获取请求主机?原.NET 4.5.2代码报错该替换为哪种写法?

.NET 8 中替代 Request.Url.AbsoluteUri 的写法

在.NET 8(及后续ASP.NET Core版本)的Razor视图里,传统.NET Framework中的全局Request对象不再直接可用,你可以通过以下两种方式获取当前请求的绝对URI:

方式一:直接通过HttpContext访问

在_Layout.cshtml中直接使用HttpContext获取请求对象,调用扩展方法拿到完整URL:

@{
    string s = HttpContext.Request.GetDisplayUrl();
}

GetDisplayUrl()方法会返回包含完整路径、查询字符串的绝对URL,和原代码Request.Url.AbsoluteUri的效果完全一致。

方式二:注入IHttpContextAccessor(适配复杂场景)

如果需要在视图组件等非直接上下文场景使用,先在Program.cs中注册服务:

builder.Services.AddHttpContextAccessor();

再在视图中注入并使用:

@inject IHttpContextAccessor HttpContextAccessor
@{
    string s = HttpContextAccessor.HttpContext?.Request.GetDisplayUrl();
}

注意添加空值检查,避免HttpContext为null时触发异常。

补充说明

GetDisplayUrl()是Microsoft.AspNetCore.Http.Extensions包中的扩展方法,ASP.NET Core项目通常默认已引用该包,无需额外安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 04:35:21