オブジェクトをシリアル化し、Web 経由で送信しようとしています。オブジェクトをシリアライズしてすぐにデシリアライズできます。ただし、サーバー側でこれを使用して HTTP 経由でバイトを送信しようとすると:
byte[] b = ObjectToByteArray(anObject);
SimpleWorkerRequest.SendResponseFromMemory(b, b.Length);
そしてクライアント側で使用します:
WebClient client = new WebClient();
byte[] result = client.DownloadData(url);
結果のバイトは、送信されたバイト b と一致しません。使用するエンコーディングを変更しようとしましたが、バイトが変更されるだけで、一致することはありません。WebClient に encoding フィールドがあることは確認しましたが、それは 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");
しかし、他の部分についてはよくわかりません..ページを参照すると、ダウンロードではなくテキストとして表示されます