我正在尝试序列化一个对象并通过网络发送它。我可以序列化并立即反序列化对象。但是,当我尝试在服务器端使用此方法通过HTTP发送字节时:
byte[] b = ObjectToByteArray(anObject);
SimpleWorkerRequest.SendResponseFromMemory(b, b.Length);
然后在客户端使用:
WebClient client = new WebClient();
byte[] result = client.DownloadData(url);
结果字节与发送的字节b不匹配。我试过改变使用的编码,但它只改变周围的字节,它们从不匹配。我确实看到WebClient有一个编码字段,但这只适用于DownloadString。 client.DownloadData使用什么样的编码?如何确保字节保持不变?如果有一个SimpleWorkerRequest的替代品可以让我发送文本,那也很棒..
修改 如果我创建一个ASP.NET项目并使用
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition",
"attachment; filename=whatever.bin");
有效!我试着回到SimpleWorkerRequest并添加:
swr.SendKnownResponseHeader(System.Web.HttpWorkerRequest.HeaderContentType, "application/octet-stream");
但我不确定另一部分..如果我浏览页面,它显示为文本,而不是下载