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 以来的所有框架都会将调用转发到 ProductsController
或 ProductsPage
(对于 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中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache