-- bgnd 情報を追加して編集 --
(ブラック ボックスの) COM オブジェクトが文字列を返します。2 番目の COM オブジェクトは、入力として byte[] と同じ文字列を想定し、処理されたデータを含む byte[] を返します。これは、クライアント側のスタンドアロン アプリケーションにロードされる、ダウンロード可能な、人間が判読できないファイルとしてブラウザに供給されます。
そのため、最初の COM から文字列 inputString を取得し、次のように byte[] に変換します
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, inputString);
obj = ms.ToArray();
それを 2 番目の COM にフィードし、読み戻します。結果はブラウザに書き込まれます。
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename="test.dat");
Response.BinaryWrite(obj);
フォーマットが正しくないため、2 番目の COm でエラーが発生します。元の文字列を確認しに行きましたが、まったく問題ありませんでした。次に、最初の com からの結果をブラウザに直接送り、何が表示されるかを見ました。道路のどこかに、判読できない余分な文字が追加されているようです。これらのキャラクターとは何ですか?何に使用されますか?どうすれば 2 番目の COM が停止するのを防ぐことができますか?
読めない文字は次のようなものです。
NUL/SOH/NUL/NUL/NUL/FF/FF/FF/FF/SOH/NUL/NUL/NULなど
何か案は?
--答え
--
System.Text.Encoding.UTF8.GetBytes(theString)
むしろその後
BinaryFormatter.Serialize()