I want to use IUrlHelper through dependency injection to be able to use its functionality to generate uris for different rest endpoints. I cant seem how to figure out how to create a UrlHelper from scratch because it changed in MVC 6 and MVC doesnt automatically have that service available in the IoC controller.
The setup is my Controller take in an internal model to api model converter class and that uses the IUrlHelper (all through Depenedency Injection).
If there is a better alternative to IUrlHelper/UrlHelper I can use to generate Uris for my WebApi action/controllers I am open to suggestion.
ASP.NET Core 2.0
Install
Use
Disclaimer: author of this package
This method is now obsolete. Look at update below.
Instead of
services.AddTransient<IUrlHelper, UrlHelper>()
or trying to directly inject IUrlHelper you can inject IHttpContextAccessor and get the service from there.Unless it is just a bug, adding the IUrlHelper service with UrlHelper does not work.
UPDATE 2017-08-28
The previous method no longer seems to work. Below is a new solution.
Confgure IActionContextAccessor as a service:
Then inject IActionContextAccessor and IUrlHelperFactory to then generate the IUrlHelper like below
The UrlHelper requires the current action context, and we can acquire that from the ActionContextAccessor. I'm using this:
Now, you can inject IUrlHelper directly into anything that needs it without having to jump through IHttpContextAccessor .