【发布时间】: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