2

下面的代码放在 page_Load 中。当您第一次直接进入页面并且没有引荐来源网址时,我应该如何处理以绕过 UrlReferrer?我在这里缺少什么?

    if (HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }
4

6 回答 6

5

只需检查UrlReferrer空值:

if (HttpContext.Current.Request.UrlReferrer != null 
    && HttpContext.Current.Request.UrlReferrer.AbsoluteUri != null)
{
     urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
}     
else     
{         
    urlReferer = "";     
} 
于 2012-07-11T14:19:59.187 回答
3

谁说客户端在 HTTP 请求中是通过referer 传递的?

检查是否UrlReferrernull第一个

if (HttpContext.Current.Request.UrlReferrer != null)
    {
        urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
    }
    else
    {
        urlReferer = "";
    }
于 2012-07-11T14:19:40.483 回答
2

为什么不这样比检查空值更干净

private void Page_Load()
{
    if (!IsPostBack)
    {
        if (HttpContext.Current.Request.UrlReferrer != null)
        {
            urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString();
        }
        else
        {
            urlReferer = "";
        }
    }
}
于 2012-07-11T14:25:39.907 回答
2

我相信你需要检查是否HttpContext.Current.Request.UrlReferrer != null.

于 2012-07-11T14:19:48.407 回答
0

如果 UrlReferrer 为 null,则对 AbsolutUri 的测试将失败。

尝试最初测试 UrlReferrer 是否为空,这可能会纠正问题。

于 2012-07-11T14:20:23.960 回答
0

使用您的调试器。如果您在 Visual Studio 之外运行它,那么当抛出异常时,您可能会被带到调试器窗口。调试器底部有多个选项卡,包括“Locals”和“Watch”,您可以使用它们查看正在存储的变量。

如果上面的代码确实是导致问题的原因

HttpContext.Current.Request.UrlReferrer.AbsoluteUri

HttpContext.Current.Request.UrlReferrer

HttpContext.Current.Request

HttpContext.Current

HttpContext

设置为空

于 2012-07-11T14:22:09.910 回答