在 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);