Comment utilisez-vous une esperluette dans un HttpCookie en VB.NET?
Question
J'ai un cookie enregistré sur l'utilisateur comme suit ...
Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
searchCookie.Item("SearchText") = FullSearchCriteria.SearchText
searchCookie.Item("SearchType") = FullSearchCriteria.SearchType
Le SearchText stocke une valeur qu'ils ont entrée dans une page précédente. Nous avons observé s'il y a une esperluette dans le cookie (par exemple, Tyne & Wear), le cookie ne sauvegarde pas les valeurs suivantes (SearchType).
Qu'est-ce qui se passe est le cookie est sortie comme ceci:
SearchText=Tyne &
Il est évident que l'esperluette confond le cookie. Y at-il un moyen d'éviter que cela se produise?
La solution
Vous pouvez utiliser la méthode URLEncode .
Quelque chose comme:
imports HttpContext.Current
...
Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
searchCookie.Item("SearchText") = Server.UrlEncode(FullSearchCriteria.SearchText)
searchCookie.Item("SearchType") = Server.UrlEncode(FullSearchCriteria.SearchType)
Il est essentiel que que certains caractères sont autorisés dans les cookies avec des caractères tels que esperluette les briser .
Autres conseils
D'oh! Je suis un dork ...
Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria")
searchCookie.Item("SearchText") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchText)
searchCookie.Item("SearchType") = HttpContext.Current.Server.UrlEncode(FullSearchCriteria.SearchType)
Les valeurs de cookies doivent être codées. Je ne suis pas expert en VB, mais il semble que cela se fait avec la méthode
System.Web.HttpUtility.UrlEncode