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

ASP.NET Core Web API如何获取Web API URL基础地址?

在C# Web API中获取基础URL的方法

针对ASP.NET Core Web API

ASP.NET Core里已经弃用了HttpContext.Current,需要通过依赖注入IHttpContextAccessor来获取请求上下文:

  1. 先注册服务
    在Program.cs中添加以下代码,注册HttpContextAccessor:
builder.Services.AddHttpContextAccessor();
  1. 注入并使用
    在控制器或服务类中注入IHttpContextAccessor,然后构造基础URL:
private readonly IHttpContextAccessor _httpContextAccessor;

// 构造函数注入
public YourController(IHttpContextAccessor httpContextAccessor)
{
    _httpContextAccessor = httpContextAccessor;
}

public IActionResult GetBaseUrl()
{
    var request = _httpContextAccessor.HttpContext.Request;
    // 拼接基础URL:协议 + 域名端口 + 应用路径(如果有)
    var baseUrl = $"{request.Scheme}://{request.Host}{request.PathBase}";
    return Ok(baseUrl);
}
  • request.Scheme:获取协议(http/https)
  • request.Host:获取域名+端口(比如localhost:5000)
  • request.PathBase:如果API部署在子路径下(比如/example/api),会获取到/example

针对旧版ASP.NET Web API(Framework)

如果是基于.NET Framework的Web API,HttpContext.Current可以正常使用,但要确保代码处于请求上下文线程中(异步方法或后台线程可能无法获取):

var request = HttpContext.Current.Request;
var baseUrl = $"{request.Url.Scheme}://{request.Url.Authority}{request.ApplicationPath}";
  • request.Url.Authority:等价于域名+端口
  • request.ApplicationPath:获取应用的虚拟路径

关于IWebHostEnvironment

IWebHostEnvironment仅提供环境相关的文件路径(比如wwwroot目录)和环境名称(开发/生产),不包含请求级别的URL信息,所以无法用来获取基础URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:42:05