新闻中心
ASP.NET Core 中的链接生成器如何构建绝对 URL?
答案:LinkGenerator通过提供HttpContext或显式指定scheme和host来生成绝对URL,适用于控制器、中间件及后台任务场景。

在 ASP.NET Core 中,LinkGenerator 用于生成应用内的 URL。要构建绝对 URL(包含协议、主机名和端口的完整地址),你需要提供足够的上下文信息,因为 LinkGenerator 本身是无状态的,不依赖当前 HTTP 上下文。
使用 LinkGenerator 构建绝对 URL
LinkGenerator 提供了多个方法(如 GetPathByAction、GetUriByAction 等)来生成 URL。要生成绝对 URL,推荐使用带有 HttpContext 或显式提供 scheme 和 host 的重载方法。
-
通过 HttpContext 生成绝对 URL
如果你在控制器或中间件中,可以传入当前的
HttpContext,它包含了 scheme(如 https)、host、port 等信息。var uri = _linkGenerator.GetUriByAction( action: "GetById", controller: "Products", values: new { id = 123 }, context: httpContext, fragment: "" );这会自动生成类似:
https://localhost:5001/Products/GetById/123的绝对 URL。 -
显式指定 Scheme 和 Host
在后台服务、定时任务或非请求上下文中,没有
HttpContext,这时需要手动提供协议和主机。var uri = _linkGenerator.GetUriByAction( action: "Index", controller: "Home", values: null, scheme: "https", host: new HostString("example.com") );结果为:
https://example.com/
OpenAI Codex
可以生成十多种编程语言的工作代码,基于 OpenAI GPT-3 的自然语言处理模型
144
查看详情
-
带端口和路径基础的场景
如果应用部署在特定端口或子路径下,可进一步配置
HostString或使用pathBase。var host = new HostString("localhost", 8080); var uri = _linkGenerator.GetUriByAction( action: "Details", controller: "Blog", values: new { id = 5 }, scheme: "http", host: host );输出:
http://localhost:8080/Blog/Details/5
在非请求上下文中使用 LinkGenerator
由于 LinkGenerator 是注册为单例或作用域服务的,你可以在任何注入它的类中使用。但在后台任务中必须显式提供 s 和
chemehost,否则无法生成绝对路径。
建议将常用的基础 URL 配置在 appsettings.json 中,例如:
"AppSettings": {
"BaseUrl": "https://yourdomain.com"
}
然后在代码中解析 scheme 和 host 进行调用。
注意事项
-
LinkGenerator不依赖当前请求,适合在服务层、后台任务中使用。 - 生成绝对 URL 必须提供 scheme 和 host,否则返回的是相对路径或不完整 URL。
- 使用
GetUri*方法才能生成完整 URI;GetPath*方法仅生成路径部分。 - 注意处理 HTTPS 和反向代理场景下的正确 scheme。
以上就是ASP.NET Core 中的链接生成器如何构建绝对 URL?的详细内容,更多请关注其它相关文章!
# json
# 查询类网站建设
# 东莞免费建站关键词排名
# 抖音关键词指数排名
# 甘肃网站推广装饰设计
# 光山网站推广哪家靠谱
# 广州财税seo软件
# 必应seo赚钱项目
# 推荐使用
# 但在
# 你在
# 多个
# 就能
# 你可以
# 自然语言
# 不依赖
# 的是
# 有什么
# .net
# 作用域
# ai
# 端口
# app
# js
# 常德外贸网站建设多少钱
# 通州网站建设渠道
# 绵阳眉山网站建设
相关栏目:
【
行业资讯67740 】
【
技术百科0 】
【
网络运营39195 】
相关推荐:
单身交友必备软件
域名解析后为什么要进行域名备案
春运抢票极速版怎么抢票
爱玛电动车power模式是什么意思
恋爱软件免费聊天不收费的有哪些
单片机的速度怎么求
r中如何逐行执行命令
折叠屏手机信号哪个最强
360f4怎么取消百变壁纸
如何固态硬盘4k对齐
如何找出命令行
如何用dos命令分区
安装固态硬盘如何设置
怎么确定手机是5g
爱奇艺视频怎么下载到手机u盘怎么转换格式方法
url解码什么意思
哪些编程软件需用typescript
j*a对数组怎么使用
win7如何打开命令行窗口
8英寸等于多少厘米
如何安装m.2固态硬盘
如何提高import命令的性能
台机如何安装固态硬盘
春运抢票技巧攻略
typescript是什么时候出来的
一尺是多少厘米
单片机怎么控制闪烁技术
折叠屏手机哪款最好
路由器power闪红绿灯闪是什么意思
对应市盈率是30X是什么意思
如何进入 dos 命令行
金色cmyk色值是多少
meet是什么意思
手机如何更改固态硬盘
夸克学习都有什么课程
单片机怎么加死循环
平仓是什么意思?
电瓶车屏幕上显示power是什么意思
课程伴侣电脑怎么登录
电动车power灯亮红灯是什么意思
春运抢票到哪里抢票啊
如何在命令行写j*a程序
如何在固态硬盘上安装win7系统
折叠屏手机哪个卖得最好
typescript怎么理解的
typescript如何生成uuid
51单片机怎么用flash
春运抢票哪个城市好抢
春运抢票可以抢几张
8寸照片尺寸多少厘米


2025-10-02
浏览次数:次
返回列表