首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapFallbackToPage在ASP.NET内核中的子文件夹上

MapFallbackToPage在ASP.NET内核中的子文件夹上
EN

Stack Overflow用户
提问于 2020-12-29 14:54:28
回答 1查看 2.8K关注 0票数 4

我正试图在我的ASP.NET核心应用程序中创建一个Razor页面的备用路由,这样我就可以在子路径上托管服务器端的Blazor应用程序。如文档中所述,从根创建回退路由是可行的。但我希望这是我在/Admin/*路线上的退路。

我的当前代码如下:

代码语言:javascript
复制
app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin", "/Admin/_Host");
});

我还尝试使用以下设置:

代码语言:javascript
复制
app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin/{*segment}", "/Admin/_Host");
});

这两种配置最终生成404时,我输入一个URL的网页,存在于我的Blazor应用程序。我验证了使用中导航Blazor应用程序确实有效。

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 16:00:33

原来我应该使用以下代码:

代码语言:javascript
复制
app.UseEndpoints(endpoints =>
{
    // ...
    endpoints.MapFallbackToPage("/Admin/{**segment}", "/Admin/_Host");
});

注意模式中的**。它是/Admin部分之后的URL中所有段的递归映射。我只使用了一颗星,这导致深嵌套的URL与模式不匹配。

我了解到MapFallbackToPage方法的模式接受一个规则的路由模式。

对于那些对学习更感兴趣的人:https://learn.microsoft.com/en-us/aspnet/core/fundamentals/routing?view=aspnetcore-5.0

替代解

您还可以在@page "/Admin/{**segment}"的顶部添加一个_Host.cshtml指令。您必须在MapFallbackToPage中删除Startup.cs调用。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65494101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档