2012-07-11 1 views
2

Le code ci-dessous est placé dans page_Load. Comment dois-je gérer cela pour contourner UrlReferrer lorsque vous entrez la page directement la première fois et il n'y a pas de référant? Qu'est-ce qui me manque ici?NullRefrenceException n'a pas été gérée par le code utilisateur

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

Répondre

2

Pourquoi pas de cette façon beaucoup plus propre que la vérification nulls

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

Qui dit que le client a été transmis par le référent dans la requête HTTP?

Vérifiez si UrlReferrer est null premier

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

Ce jetteront NullReferenceException si 'HttpContext.Current.Request.UrlReferrer.AbsoluteUri == null' – sll

2

Je crois que vous devez vérifier si HttpContext.Current.Request.UrlReferrer != null.

5

Il suffit de cocher UrlReferrer pour null:

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

Quand essayez de vérifier pour if (HttpContext.Current.Request.UrlReferrer.AbsoluteUri! = Null) puis jette la référence NullReferenceException - Object non définie à une instance d'un objet, donc je ne peux pas utiliser cette syntaxe mais en vérifiant if (HttpContext.Current.Request. UrlReferrer! = Null) fonctionne dans mon code et le placer dans (! IsPostBack) le rend encore meilleur. – laspalmos

0

Si UrlReferrer est nulle, le test à AbsolutUri échouera. Essayez d'abord tester UrlReferrer pour null, cela corrigera probablement le problème.

0

Utilisez votre débogueur. Si vous utilisez ce programme en dehors de Visual Studio, vous risquez d'être amené dans une fenêtre de débogage lorsque l'exception est levée. Il y a plusieurs onglets au bas du débogueur, y compris "Locals" et "Watch", vous pouvez les utiliser pour voir quelles variables sont stockées.

Si le code ci-dessus est en effet ce qui cause le problème que

HttpContext.Current.Request.UrlReferrer.AbsoluteUri
ou
HttpContext.Current.Request.UrlReferrer
ou
HttpContext.Current.Request
ou
HttpContext.Current
ou
HttpContext

est réglé sur null

Questions connexes