【问题标题】:How to use Request.UrlReferrer in ASP.NET?如何在 ASP.NET 中使用 Request.UrlReferrer?
【发布时间】:2014-08-06 11:16:27
【问题描述】:

我有两个 aspx 网页。在第一个我有这个代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    Response.Redirect("~/Code.aspx")
End Sub

现在在 Code.aspx 页面我有这个代码:

Label1.Text = Request.UrlReferrer.ToString

我希望标签显示第一页 URl,但运行时出现错误。如何解决此问题?谢谢

这是错误信息:Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

【问题讨论】:

  • Request.UrlReferrer 可能是 null 因此你在尝试访问它时会得到一个 NullReferenceException。检查null。附带说明:UrlReferrer 在使用 Response.Redirect 时将始终为 null
  • 我发布了错误消息。谢谢 Sani,那么它将如何显示引用的 URL?我应该使用什么来代替 Response.Redirect?
  • UrlReferrer 只有在客户端(即浏览器)发送时才会包含之前的Url 的信息。您不能以编程方式设置它。如果用户在浏览器中输入 url,则不会有UrlReferrer。只有当用户单击链接时,客户端才会发送UrlReferrer。客户还可以选择根本不发送UrlReferrer。这完全取决于客户端/浏览器。 UrlReferrer 在任何时候都不应该被信任是有效的。它可以被欺骗。
  • 好的。我想通过在浏览器栏中粘贴 URL 来禁用用户对我的网页的访问。我在第一页使用了 response.redirect 方法。有什么办法可以用吗?
  • 要满足您的要求,您应该实现authentication。 IE。让用户使用用户名/密码登录您的网站。正如我所说,你永远不应该相信UrlReferrer 是有效的。

标签: asp.net vb.net url


【解决方案1】:

将重定向从页面加载中取出,并将其放在链接或 response.redirect 以外的其他东西上。然后在你的代码中尝试这样的事情,以确保它不为空:

if(Request.UrlReferrer != null)
{ 
    Label1.Text = Request.UrlReferrer.ToString();
}
else
{
    Label1.Text = "No URL referrer";
}

抱歉,刚刚注意到您使用的是 VB.net,但代码很容易更改,而且原理相同。

如果您需要 response.redirect,我想基于 cookie 的解决方案会起作用,但对于这样的基本要求似乎有点涉及。

【讨论】:

  • 在这种情况下,Label1.Text 将始终设置为 No URL referrer
  • Request.UrlReferrer 在使用Response.Redirect 时不会被设置。在 OP 中查看我的 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 2010-09-14
  • 1970-01-01
相关资源
最近更新 更多