SimpleWorkerRequest.SendResponseFromMemory。从WebClient.DownloadData读取的字节不匹配

时间:2012-01-17 15:10:48

标签: c# .net encoding webclient simpleworkerrequest

我正在尝试序列化一个对象并通过网络发送它。我可以序列化并立即反序列化对象。但是,当我尝试在服务器端使用此方法通过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");

但我不确定另一部分..如果我浏览页面,它显示为文本,而不是下载

0 个答案:

没有答案