我正在为后台工作者创建一个UrlHelper来创建回调网址,这意味着它不是正常请求的一部分,我可以通过DI请求它.
在ASP.Net 5中,我可以创建一个HttpRequest并为它提供与构建我的应用程序相同的HttpConfiguration,但在ASP.Net Core 2.0中,UrlHelper依赖于完整的ActionContext,这有点难以制作.
我有一个工作原型,但它正在使用一个令人讨厌的黑客走私应用程序启动过程中的路由数据.有一个更好的方法吗?
public class Capture
{
public IRouter Router { get; set; }
}
public static class Ext
{
// Step 1: Inject smuggler when building web host
public static IWebHostBuilder SniffRouteData(this IWebHostBuilder builder)
{
return builder.ConfigureServices(svc => svc.AddSingleton<Capture>());
}
// Step 2: Swipe the route data in application startup
public static IApplicationBuilder UseMvcAndSniffRoutes(this IApplicationBuilder app)
{
var capture = app.ApplicationServices.GetRequiredService<Capture>();
IRouteBuilder capturedRoutes = null;
app.UseMvc(routeBuilder => capturedRoutes = routeBuilder);
capture.Router = capturedRoutes?.Build();
return app;
} …Run Code Online (Sandbox Code Playgroud)