会话中是字节还是写完后数据会被转换成字符串? 如果是的话,我想我可以这样理解:
var res = Encoding.UTF8.GetBytes(Session["session_state"]);
或者我可以接受它"原样"没有转换成字节数组?像:
var res = Session["session_state"] as bytes[]; // or smth. like that
答案 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[];