2012-07-11 103 views
2

以下代码位于page_Load中。当我第一次直接进入页面并且没有引用链接时,我应该如何处理这个操作以避开UrlReferrer? 我在这里错过了什么?NullRefrenceException由用户代码未处理

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

回答

2

为什么不这样不是检查空清洁得多

private void Page_Load() 
{ 
    if (!IsPostBack) 
    { 
     if (HttpContext.Current.Request.UrlReferrer != null) 
     { 
      urlReferer = HttpContext.Current.Request.UrlReferrer.AbsoluteUri.ToString(); 
     } 
     else 
     { 
      urlReferer = ""; 
     } 
    } 
} 
3

谁说客户端通过HTTP请求中的推荐人传递的?

检查UrlReferrernull第一

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

这将引发的NullReferenceException如果'HttpContext.Current.Request.UrlReferrer.AbsoluteUri == null' – sll 2012-07-11 14:20:27

2

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

5

只要检查UrlReferrer为空:

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

当试图签对于if(HttpContext.Current.Request.UrlReferrer.AbsoluteUri!= Null),然后抛出NullReferenceException - 对象引用未设置为对象的实例,所以我不能使用此语法,但检查if(HttpContext.Current.Request。 UrlReferrer!= null)在我的代码中工作,并将它放在(!IsPostBack)中使其更好。 – laspalmos 2012-07-11 14:51:52

0

如果UrlReferrer为空,则测试AbsolutUri将失败。

尝试最初测试UrlReferrer为null,这可能会解决问题。

0

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

如果上面的代码确实是什么导致的问题比

HttpContext.Current.Request.UrlReferrer.AbsoluteUri

HttpContext.Current.Request.UrlReferrer

HttpContext.Current.Request

HttpContext.Current

HttpContext

设置为null

相关问题