【问题标题】:Blazor: ASPX URL Rewrite to Razor Page with Parameters processes then continues on to Not FoundBlazor:ASPX URL Rewrite to Razor Page with Parameters 进程然后继续 Not Found
【发布时间】:2023-02-25 01:12:43
【问题描述】:

我使用 Url Rewriting 将我的旧 .aspx 页面路由到我的 Blazor Server 应用程序中的各种页面。这在大多数情况下工作得很好,但是,我有一个带有参数的 URL,它确实通过了目标页面,但最终出现在“未找到”页面上。

我已经追踪到 URL 重写器。如果我从页面正确处理的 URL 中删除 .aspx,但是,如果我有 .aspx 扩展名,它会找到 Razor 页面,代码会执行,但它会继续到其他页面,然后导致它显示未找到页面。

这是我的重写器。 AmazonLAPConsent 规则与此问题相关。

RewriteOptions urlOptions = new RewriteOptions().AddRewrite(@"^(.*).ashx$", "api/$1", true);

urlOptions.AddRewrite(@"^(.*).inf$", "api/ComputerInfo", true);

urlOptions.AddRewrite(@"AmazonLAPconsent.aspx", "AmazonLAPconsent", true);

urlOptions.AddRewrite(@"^(.*).aspx$", "api/$1", true);

app.UseRewriter(urlOptions);

我已经注释掉了其他 .aspx 扩展规则,没有任何变化。除了特定于此页面的规则外,我已经注释掉了所有规则,没有任何更改。

为什么 .aspx 扩展名的存在会导致它完全通过 razor 页面并最终出现在“未找到”页面上?

如前所述,我已经注释掉了各种代码等等,唯一有所不同的是 .aspx 扩展名的存在。我还尝试将重写器布尔值设置为 false,但正确的值为 true,这应该可以防止进一步重写。由于我通过注释掉了下一个 .aspx 规则,所以这并没有修复它也就不足为奇了,因为无论如何都不会调用下一个规则 - 或者至少将其注释掉没有任何区别。

【问题讨论】:

    标签: asp.net razor routes blazor url-parameters


    【解决方案1】:

    事实证明,我所需要的只是添加另一个 @page 指令:

    @page "/AmazonLAPconsent"
    @page "/AmazonLAPconsent.aspx"  <<<< this worked.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-10
      • 2020-12-05
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 2017-07-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多