首页 > 常见问题 > 正文

ASP.NET Core 中的链接生成器如何构建绝对 URL?

星降
发布: 2025-10-02 16:52:02
原创
805人浏览过
答案:LinkGenerator通过提供HttpContext或显式指定scheme和host来生成绝对URL,适用于控制器、中间件及后台任务场景。

asp.net core 中的链接生成器如何构建绝对 url?

在 ASP.NET Core 中,LinkGenerator 用于生成应用内的 URL。要构建绝对 URL(包含协议、主机名和端口的完整地址),你需要提供足够的上下文信息,因为 LinkGenerator 本身是无状态的,不依赖当前 HTTP 上下文。

使用 LinkGenerator 构建绝对 URL

LinkGenerator 提供了多个方法(如 GetPathByActionGetUriByAction 等)来生成 URL。要生成绝对 URL,推荐使用带有 HttpContext 或显式提供 schemehost 的重载方法。

常用方式如下:
  • 通过 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/

    Find JSON Path Online
    Find JSON Path Online

    Easily find JSON paths within JSON objects using our intuitive Json Path Finder

    Find JSON Path Online 193
    查看详情 Find JSON Path Online
  • 带端口和路径基础的场景

    如果应用部署在特定端口或子路径下,可进一步配置 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 是注册为单例或作用域服务的,你可以在任何注入它的类中使用。但在后台任务中必须显式提供 schemehost,否则无法生成绝对路径。

建议将常用的基础 URL 配置在 appsettings.json 中,例如:

"AppSettings": {
  "BaseUrl": "https://yourdomain.com"
}
登录后复制

然后在代码中解析 scheme 和 host 进行调用。

注意事项

  • LinkGenerator 不依赖当前请求,适合在服务层、后台任务中使用。
  • 生成绝对 URL 必须提供 scheme 和 host,否则返回的是相对路径或不完整 URL。
  • 使用 GetUri* 方法才能生成完整 URI;GetPath* 方法仅生成路径部分。
  • 注意处理 HTTPS 和反向代理场景下的正确 scheme。
基本上就这些。只要传对 scheme 和 host,LinkGenerator 就能可靠地生成绝对 URL。

以上就是ASP.NET Core 中的链接生成器如何构建绝对 URL?的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号