如何从Session byte的数组中获取?会话内部也写了字节数组

时间:2014-06-24 09:15:47

标签: c# session byte

会话中是字节还是写完后数据会被转换成字符串? 如果是的话,我想我可以这样理解:

var res = Encoding.UTF8.GetBytes(Session["session_state"]);

或者我可以接受它"原样"没有转换成字节数组?像:

var res = Session["session_state"] as bytes[]; // or smth. like that

2 个答案:

答案 0 :(得分:1)

数据未被转换。如果会话对象是序列化的(取决于它的存储方式),那么它会在您再次访问它之前进行反序列化。

只需将值转换为字节数组:

var res = Session["session_state"] as byte[];

或:

var res = (byte[])Session["session_state"];

附注:字节数组不能使用UTF-8编码可靠地转换为字符串。反过来使用UTF-8,即将字符串转换为字节然后再返回。要从字节创建字符串,您宁愿使用类似base64的字符串。

答案 1 :(得分:0)

无论您使用的会话状态模式(inproc,状态服务器......),您都将始终获得存储在会话中的内容

所以答案是

var res = Session["session_state"] as byte[];