小编Sty*_*lpe的帖子

ASP.Net Core 2.0:无需请求即可创建UrlHelper

我正在为后台工作者创建一个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)

c# urlhelper asp.net-core asp.net-core-2.0

25
推荐指数
2
解决办法
6007
查看次数

标签 统计

asp.net-core ×1

asp.net-core-2.0 ×1

c# ×1

urlhelper ×1