.NET 5 Razor视图中@Url.Content()未返回静态文件绝对路径问题
问题原因
Url.Content() 方法的原生设计就是返回应用根目录下的相对路径,仅输出以/开头的路径段,不会自动拼接当前请求的协议、域名、端口信息,自然无法得到带域名的完整绝对URL,属于方法选型错误,不是运行异常。
修复方案
直接基于当前请求上下文拼接完整域名,和Url.Content()返回的相对路径组合即可,不需要硬编码站点地址,开发、生产环境可自动适配:
@{ var fileRelativePath = Url.Content("~/assets/121545/mid.jpg"); var pageThumbnail = $"{Context.Request.Scheme}://{Context.Request.Host}{fileRelativePath}"; } @section Meta { <meta property="og:image" content="@pageThumbnail" /> }
- 本地开发运行时输出:
https://localhost:5001/assets/121545/mid.jpg,和预期结果完全一致 - 部署到线上后会自动适配线上域名,不需要额外修改配置
补充说明:Open Graph协议的
og:image字段强制要求使用完整绝对URL,传入相对路径会导致微信、推特、Facebook等平台的爬虫无法正确抓取站点预览图。
内容的提问来源于stack exchange,提问作者byteram
相关产品推荐
相关产品推荐

