asp.net 核心中的 HttpContext.RewritePath

Posted

技术标签:

【中文标题】asp.net 核心中的 HttpContext.RewritePath【英文标题】:HttpContext.RewritePath in asp.net core 【发布时间】:2021-08-21 07:29:00 【问题描述】:

我是 ASP.Net 核心的新手,正在将框架代码迁移到 asp.net 核心,但不了解如何将以下代码转换为 asp.net 核心。

HttpContext.RewritePath(HttpContext.Request.RawUrl.Substring(0, HttpContext.Request.RawUrl.IndexOf("?", StringComparison.Ordinal)), string.Empty, queryString);

【问题讨论】:

能否请您描述清楚您想要实现的功能? 为什么首先使用这段代码?这是在引入路由之前的 WebForms 中,可能根本不需要 ASP.NET Routing versus URL Rewriting 部分解释了路由如何取代 URL 重写。 WebForms 无法处理路径中的参数。之后的所有框架都可以。不必将 /Products/Widgets/ 重写为 /Products.aspx?id=4,自 MVC 以来的所有框架都会将调用转发到 ProductsControllerProductsPage(对于 Razor 页面)并将 Widgets 作为参数传递给 Get 操作。 URL 重写也用于从 URL 中去除会话 ID。不再使用此类会话 ID。 您不能只使用 WebForms 应用程序并为 .NET Core 重新编译它。 Web 应用程序的架构在过去 10 年中发生了彻底的变化,WebForms 的许多怪癖和变通方法不再适用 【参考方案1】:

在 ASP.NET Core 中重写路径就像在管道的早期运行一个中间件来操纵 http 请求的相关部分一样简单。您可以调整 Path、PathBase、QueryString 等并影响在重写代码之后运行的中间件。这就是作为 ASP.NET Core 的一部分提供的重写中间件所做的事情。

【讨论】:

以上是关于asp.net 核心中的 HttpContext.RewritePath的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Core 2.0中的HttpContext

asp.net的核心是啥

Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache

会话变量立即为空.ASP.net核心

.net 标准库中的 HttpContext

在当前 HTTPContext 中生成新的 ASP.NET 会话