J'ai une page error.aspx
. Si un utilisateur accède à cette page, il récupérera le chemin d'erreur dans l'URL de la méthode page_load()
à l'aide de Request.QueryString["aspxerrorpath"]
Et tout fonctionnera correctement.
Mais si un utilisateur accède directement à cette page, il générera une exception car aspxerrorpath
n'y est pas.
Comment puis-je vérifier que aspxerrorpath
existe ou non?
Vous pouvez simplement vérifier pour null
:
if(Request.QueryString["aspxerrorpath"]!=null)
{
//your code that depends on aspxerrorpath here
}
Recherchez la valeur du paramètre:
// .NET < 4.0
if (string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]))
{
// not there!
}
// .NET >= 4.0
if (string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"]))
{
// not there!
}
S'il n'existe pas, la valeur sera null
, si elle existe, mais n'a pas de valeur définie, ce sera une chaîne vide.
Je pense que ce qui précède répondra mieux à vos besoins qu’un simple test de null
, car une chaîne vide est tout aussi mauvaise pour votre situation spécifique.
Pour rechercher une chaîne de requête vide, vous devez utiliser la propriété Request.QueryString.HasKeys
.
Pour vérifier si la clé est présente: Request.QueryString.AllKeys.Contains()
Ensuite, vous pouvez obtenir la valeur de ist et effectuer toute autre vérification, comme isNullOrEmpty, etc.
Vous pouvez aussi essayer:
if (!Request.QueryString.AllKeys.Contains("aspxerrorpath"))
return;
string.IsNullOrEmpty(Request.QueryString["aspxerrorpath"]) //true -> there is no value
Reviendra s'il y a une valeur
Qu'en est-il d'une approche plus directe?
if (Request.QueryString.AllKeys.Contains("mykey")
pensez que le chèque que vous cherchez est ceci:
if(Request.QueryString["query"] != null)
Il retourne null
car, dans cette chaîne de requête, il n'a aucune valeur pour cette clé.
Pour résoudre votre problème, écrivez la ligne suivante dans la méthode Page_Load de votre page.
if (String.IsNullOrEmpty(Request.QueryString["aspxerrorpath"])) return;
.Net 4.0 offre une vue plus précise des chaînes nulles, vides ou d'espaces, utilisez-le comme indiqué à la ligne suivante:
if(string.IsNullOrWhiteSpace(Request.QueryString["aspxerrorpath"])) return;
Cela n'exécutera pas vos prochaines instructions (votre logique d'entreprise) si la chaîne de requête n'a pas aspxerrorpath.