Я пытаюсь сериализовать объект и отправить его через Интернет. Я могу сериализовать и сразу десериализовать объект просто отлично. Однако, когда я пытаюсь отправить байты по 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, которая позволяет мне отправлять текст, это тоже было бы здорово ..
Edit:
Если я сделаю проект 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");
Но я не уверен насчет другой части ... если я перехожу на страницу, она отображается как текст, а не как загрузка