Как вы используете амперсанд в HTTPCookie в VB.NET? - PullRequest
1 голос
/ 02 декабря 2009

У меня есть файл cookie, сохраненный для пользователя следующим образом ...

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

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

Что происходит, если cookie выводится так:

SearchText=Tyne &

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

Ответы [ 3 ]

5 голосов
/ 02 декабря 2009

Вы можете использовать метод 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)

Это важно, поскольку разрешены только определенные символы в файлах cookie с такими символами, как амперсанды, разбивающие их .

1 голос
/ 02 декабря 2009

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

System.Web.HttpUtility.UrlEncode
1 голос
/ 02 декабря 2009

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...