【问题标题】:How to generate full URL with ASP.NET Core outside the views?如何在视图外使用 ASP.NET Core 生成完整 URL?
【发布时间】:2019-06-11 20:24:51
【问题描述】:

我有一个基于 ASP.NET Core 2.2 框架编写的应用程序。我需要创建需要完整 URL 的 JSON-Ld 数据。我要转换为 JSON-Ld 的对象是使用服务类生成的。在我的服务类中,我希望能够创建完整的 URL。

在将 LinkGenerator 类注入到我的服务类的构造中后,我尝试使用它来创建 URL。但是,LinkGenerator 会生成相关的 URI,而不是完全限定的 URL(不包括域)。

我还尝试创建UrlHelper 的实例,希望可以使用它来生成完全限定的 URL。将IHttpContextAccessor 注入服务承包商后,我尝试像这样创建UrlHelper 的实例

var httpContextBase = new HttpContextWrapper(HttpContextAccessor.HttpContext);
var urlHelper = new UrlHelper(httpContextBase);

但是,new UrlHelper(httpContextBase) 抛出以下异常

System.NullReferenceException: '对象引用未设置为对象的实例。'

如何从服务类正确生成完全限定的 URL?

【问题讨论】:

标签: c# asp.net asp.net-core asp.net-core-mvc asp.net-core-2.2


【解决方案1】:

我找到了一种使用LinkGenerator的方法

我在我的服务类的构造函数中注入了IHttpContextAccessorLinkGenerator。然后我像这样生成了完整的 URI

var url = LinkGenerator.GetUriByAction("index", "home", null, HttpContextAccessor.HttpContext.Request.Scheme, HttpContextAccessor.HttpContext.Request.Host);

【讨论】:

  • 那么我们如何在选项中添加区域,我的在生成链接后不显示身份区域,这里显示错误 404 @junior
  • new { area = "Identity" } 作为参数之一
猜你喜欢
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 2012-09-20
  • 1970-01-01
相关资源
最近更新 更多