我正在尝试在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
此Cookie的值为 -
"metadata=res://*/Models.ADModel.csdl|res://*/Models.ADModel.ssdl|res://*/Models.ADModel.msl"
请建议我如何在此cookie变量中保存此完整字符串,提前致谢
答案 0 :(得分:3)
在ASP.Net中,您可以使用System.Web.HttpUtility在写入cookie之前安全地对cookie值进行编码,并在读取时将其转换回原始格式。
// Encode
HttpUtility.UrlEncode(cookieData);
// Decode
HttpUtility.UrlDecode(encodedCookieData);
这将停止分号,&符号和等号,在将值写入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'";
var encodedData = HttpUtility.UrlEncode(cs);
Response.Cookies.Add(new HttpCookie("ConnectionString", encodedData));
var cookieData = Request.Cookies["ConnectionString"].Value;
var decodedData = HttpUtility.UrlDecode(cookieData);
答案 1 :(得分:2)
Cookie由浏览器通过分号分隔处理。您可以使用System.Web.HttpUtility
安全地对Cookie进行编码。
//encode
HttpUtility.UrlEncode(cs);