在 cookie 变量中分配字符串无法正常工作
Assigning a string in cookie variable not working properly
我试图在 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 变量中保存这个完整的字符串,在此先感谢
Cookie 由浏览器通过分号分隔来处理。您可以使用 System.Web.HttpUtility
.
安全地对 cookie 进行编码
//encode
HttpUtility.UrlEncode(cs);
在 ASP.Net 中,您可以使用 System.Web.HttpUtility 在写入 cookie 之前对 cookie 值进行安全编码,并在读出时将其转换回原始形式。
// Encode
HttpUtility.UrlEncode(cookieData);
// Decode
HttpUtility.UrlDecode(encodedCookieData);
这将阻止分号、& 符号和等号在将值写入 cookie 时将其拆分为一堆 name/value 对。
您的代码将变为:
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);
我试图在 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 变量中保存这个完整的字符串,在此先感谢
Cookie 由浏览器通过分号分隔来处理。您可以使用 System.Web.HttpUtility
.
//encode
HttpUtility.UrlEncode(cs);
在 ASP.Net 中,您可以使用 System.Web.HttpUtility 在写入 cookie 之前对 cookie 值进行安全编码,并在读出时将其转换回原始形式。
// Encode
HttpUtility.UrlEncode(cookieData);
// Decode
HttpUtility.UrlDecode(encodedCookieData);
这将阻止分号、& 符号和等号在将值写入 cookie 时将其拆分为一堆 name/value 对。
您的代码将变为:
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);