我正在尝试序列化一个对象并通过网络发送它。我可以序列化并立即反序列化对象就好了。但是,当我尝试在服务器端使用它通过 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");
但我不确定另一部分..如果我浏览到该页面,它会显示为文本,而不是下载