在 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/"); });
});
我们正在编写其他页面所依赖的旧页面的新版本。因此,保持旧路由很重要。
其中一条路线如下:
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/"); });
});