Search code examples
c#asp.netcookieshttpcookie

Assigning a string in cookie variable not working properly


I am trying to save a string inside cookie variable . but after debug i saw it took only half of it.

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

During debugging i saw

Request.Cookies["ConnectionString"].Value

Value of this cookie is-

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

please suggest me how to save this complete string in this cookie variable,Thanks in advance


Solution

  • In ASP.Net you can use System.Web.HttpUtility to safely encode the cookie value before writing to the cookie and convert it back to its original form on reading it out.

    // Encode
    HttpUtility.UrlEncode(cookieData);
    
    // Decode
    HttpUtility.UrlDecode(encodedCookieData);
    

    This will stop semicolon, ampersands and equals signs splitting a value into a bunch of name/value pairs as it is written to a cookie.

    Your code will become :

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