2012-07-11 149 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

相關問題