Ya no tienes que investigar más por todo internet ya que llegaste al lugar indicado, contamos con la respuesta que quieres encontrar pero sin liarte.
Solución:
UrlHelper requiere el contexto de acción actual, y podemos adquirirlo desde ActionContextAccessor. estoy usando esto:
services.AddScoped();
services.AddScoped(x =>
var actionContext = x.GetService().ActionContext;
return new UrlHelper(actionContext);
);
Ahora, puede inyectar IUrlHelper directamente en cualquier cosa que lo necesite sin tener que pasar por IHttpContextAccessor .
Este método ahora está obsoleto. Mira la actualización a continuación.
En vez de services.AddTransient
o tratando de inyectar directamente IUrlHelper, puede inyectar IHttpContextAccessor y obtener el servicio desde allí.
public ClassConstructor(IHttpContextAccessor contextAccessor)
this.urlHelper = contextAccessor.HttpContext.RequestServices.GetRequiredService();
A menos que sea solo un error, agregar el servicio IUrlHelper con UrlHelper no funciona.
ACTUALIZACIÓN 2017-08-28
El método anterior ya no parece funcionar. A continuación se muestra una nueva solución.
Configure IActionContextAccessor como un servicio:
public void ConfigureServices(IServiceCollection services)
services
.AddSingleton()
.AddMvc();
Luego inyecte IActionContextAccessor y IUrlHelperFactory para luego generar el IUrlHelper como se muestra a continuación
public class MainController : Controller
private IUrlHelperFactory urlHelperFactory get;
private IActionContextAccessor accessor get;
public MainController(IUrlHelperFactory urlHelper, IActionContextAccessor accessor)
this.urlHelperFactory = urlHelper;
this.accessor = accessor;
[HttpGet]
public IActionResult Index()
ActionContext context = this.accessor.ActionContext;
IUrlHelper urlHelper = this.urlHelperFactory.GetUrlHelper(context);
//Use urlHelper here
return this.Ok();
ASP.NET Core 2.0
Instalar en pc
PM> Install-Package AspNetCore.IServiceCollection.AddIUrlHelper
Usar
public void ConfigureServices(IServiceCollection services)
...
services.AddUrlHelper();
...
Descargo de responsabilidad: autor de este paquete
Te mostramos las reseñas y valoraciones de los lectores
Te invitamos a patrocinar nuestro ensayo ejecutando un comentario o puntuándolo te estamos eternamente agradecidos.