asp.net 如何在C#中获取前一个URL?

yyhrrdl8  于 2023-08-08  发布在  .NET
关注(0)|答案(4)|浏览(175)

如何在C#中获取MasterPage中的前一个URL?
我正在寻找被重定向的页面。
先谢了。

a8jjtwal

a8jjtwal1#

您可以通过UrlReferrer属性获取前一个URL的信息。这适用于MVC和Web表单。

Request.UrlReferrer.AbsoluteUri

字符串
请注意,在第一页中,属性Request.UrlReferrer将为null。此外,如果发生重定向(例如,当用户登录到网页时)。
此属性基于HTTP_REFERER变量,因此您可以使用此属性。

Request.ServerVariables["HTTP_REFERER"]


由于HTTP_REFERER是由客户端发送的变量,因此它可能会被请求更改或删除。此外,当引用URL以https开头时,不会设置该变量。
This文章提到了几点为什么Request.UrlReferrer可以为null。

vq8itlhq

vq8itlhq2#

通常使用查询字符串参数来实现这一点:current?previousUrl=/some/11的。
这将允许您在母版页代码隐藏中使用Context.Request.QueryString["previousUrl"]从服务器端代码访问此值。

kokeuurv

kokeuurv3#

string urlName = Request.UrlReferrer.ToString();

字符串

rqqzpn5f

rqqzpn5f4#

从.NET 6.0开始,UrlReferrer对象已从Request(HttpRequest)对象中弃用。它现在作为Request.Headers字典的一部分存储。
访问UrlReffer对象的新方法是:

string urlReferrer = Request.Headers["Referer"]!.ToString();

字符串
注意:在某些情况下,此对象可能为null。最安全的做法是在访问对象之前先检查它是否为null。

string? urlReferrer = null;
if (Request.Headers.ContainsKey("Referer"))
{
    urlReferrer = Request.Headers["Referer"]!.ToString();
}

相关问题