2016-12-09 2 views
1

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

string cs="metadata=res://*/Models.ADModel.csdl|res://*/Models.ADModel.ssdl|res://*/Models.ADModel.msl;provider=System.Data.SqlClient;provider connection string='data source=192.168.10.104;initial catalog=AlarmDirectorDTU;persist security info=True;user id=aduserly;password=PasswordLY;multipleactiveresultsets=True;App=EntityFramework'" 
Response.Cookies.Add(new HttpCookie("ConnectionString", cs)); 

Во время отладки я видел

Request.Cookies["ConnectionString"].Value 

Значения этого печенья

IS-
"metadata=res://*/Models.ADModel.csdl|res://*/Models.ADModel.ssdl|res://*/Models.ADModel.msl" 

пожалуйста, предложить мне, как сохранить эту полную строку в этом переменном печенье, спасибо заранее

ответ

3

В ASP.Net вы можете использовать System.Web.HttpUtility безопасно закодировать значение куки перед записью в печенье и преобразовать его обратно в его первоначальной форме при чтении его.

// Encode 
HttpUtility.UrlEncode(cookieData); 

// Decode 
HttpUtility.UrlDecode(encodedCookieData); 

Это остановит точку с запятой, амперсанд и знака равенства расщепления значения в кучу пар имени/значения, как написано в печенье.

Ваш код будет:

string cs="metadata=res://*/Models.ADModel.csdl|res://*/Models.ADModel.ssdl|res://*/Models.ADModel.msl;provider=System.Data.SqlClient;provider connection string='data source=192.168.10.104;initial catalog=AlarmDirectorDTU;persist security info=True;user id=aduserly;password=PasswordLY;multipleactiveresultsets=True;App=EntityFramework'"; 

var encodedData = HttpUtility.UrlEncode(cs); 

Response.Cookies.Add(new HttpCookie("ConnectionString", encodedData)); 
var cookieData = Request.Cookies["ConnectionString"].Value; 

var decodedData = HttpUtility.UrlDecode(cookieData); 
2

Файлы cookie обрабатываются браузером путем разграничения точкой с запятой. Вы можете безопасно кодировать файл cookie с помощью System.Web.HttpUtility.

//encode 
HttpUtility.UrlEncode(cs); 
+0

я м проходящего этим переменный в моем EDMX контейнер, который не принимает эту закодированную строку –

Смежные вопросы