我有一个写在ASP.NET Core 2.2框架顶部的应用程序。我需要创建需要完整URL的JSON-Ld数据。我要转换为JSON-Ld的对象是使用服务类生成的。在我的服务类中,我希望能够创建完整的URL。
在将LinkGenerator
类注入服务类的构造后,我尝试使用UrlHelper
类创建URL。但是,LinkGenerator
会生成相关的URI,而不是标准URL(不包括域)。
我还尝试创建IHttpContextAccessor
的实例,希望可以使用它来生成完全限定的URL。将https://github.com/aspnet/Identity/blob/feedcb5c53444f716ef5121d3add56e11c7b71e5/src/Identity/IdentityServiceCollectionExtensions.cs#L79注入服务承包商后,我试图像这样创建UrlHelper
的实例
var httpContextBase = new HttpContextWrapper(HttpContextAccessor.HttpContext);
var urlHelper = new UrlHelper(httpContextBase);
但是,new UrlHelper(httpContextBase)
引发以下异常
System.NullReferenceException:'对象引用未设置为对象的实例。'
如何从服务类中正确生成完全限定的URL?
答案 0 :(得分:2)
我找到了一种使用LinkGenerator
我在服务类的构造函数中注入了IHttpContextAccessor
和LinkGenerator
。然后像这样
var url = LinkGenerator.GetUriByAction("index", "home", null, HttpContextAccessor.HttpContext.Request.Scheme, HttpContextAccessor.HttpContext.Request.Host);