2009-12-02 2 views
1

У меня есть печенье, сохраненное для пользователя следующим образом ...Как вы используете амперсанд в HTTPCookie в VB.NET?

Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria") 
searchCookie.Item("SearchText") = FullSearchCriteria.SearchText 
searchCookie.Item("SearchType") = FullSearchCriteria.SearchType 

В SearchText хранит значение они имеют вход в предыдущей странице. Мы наблюдали, есть ли амперсанд в файле cookie (например, Tyne & Wear), тогда cookie не сохраняет последующие значения (SearchType).

Что происходит печенье выводится следующим образом:

SearchText=Tyne & 

Очевидно амперсанд путает печенье. Есть ли способ предотвратить это?

ответ

5

Вы можете использовать метод URLEncode.

Что-то вроде:

imports HttpContext.Current 
... 
Dim searchCookie As HttpCookie = New HttpCookie("SearchCriteria") 
searchCookie.Item("SearchText") = Server.UrlEncode(FullSearchCriteria.SearchText) 
searchCookie.Item("SearchType") = Server.UrlEncode(FullSearchCriteria.SearchType) 

Это очень важно, как only certain characters are allowed in cookies с символами, такими как ampersands breaking them.

1

D'oh! Я такой док ...

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) 
1

Значения cookie должны быть закодированы. Я не эксперт VB, но, похоже, это делается с помощью метода

System.Web.HttpUtility.UrlEncode