在 Blazor 中重用旧的 aspx 路由

Reuse old aspx routes in Blazor

我们正在编写其他页面所依赖的旧页面的新版本。因此,保持旧路由很重要。

其中一条路线如下:

https://example.com/area/page.aspx?id=123

我希望它能工作,但要指向一个 blazor 组件。 我已经尝试将它作为 @page 补充添加到我已经拥有的那些,但应用程序不会 运行 使用它。

@page "/page/{id}/{property:int?}"
@page "/page/{id}"
@page "/area/page.aspx?id={id}"

刚才我也试过了

@page "/area/page.aspx

但这似乎也不起作用。当我这样做时,Blazor 甚至没有启动。我也测试了

@page "/area/page.tst

无济于事。我认为罪魁祸首是 .?

一个解决方案可能是从旧的 URL 重定向到组件,使用 @page 指令可以处理的东西,但我不知道在中间件的什么地方可以完成。

问题基本上是:人们可以通过哪些方式将旧的 URL 与 Blazor 重用?

我发现在Startup.cs中有一个方法:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

里面有这个:

app.UseEndpoints(endpoints =>
{
    endpoints.MapBlazorHub();
    endpoints.MapFallbackToPage("/_Host");
    endpoints.MapControllers();
});

在这里我可以添加以下行:

endpoints.MapGet("/area/page.aspx", async x => { x.Response.Redirect("~/page/"); });

它会重定向。漂亮 :)

结果代码将是:

app.UseEndpoints(endpoints =>
{
    endpoints.MapBlazorHub();
    endpoints.MapFallbackToPage("/_Host");
    endpoints.MapControllers();
    endpoints.MapGet("/area/page.aspx", async x => { x.Response.Redirect("~/page/"); });
});