--编辑更多bgnd信息--
一个(黑盒)COM 对象返回一个字符串。第二个 COM 对象需要与 byte[] 相同的字符串作为输入,并返回带有处理数据的 byte[]。这将作为可下载的非人类可读文件提供给浏览器,该文件将加载到客户端独立应用程序中。
所以我从第一个 COM 获取字符串 inputString 并将其转换为 byte[] 如下
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, inputString);
obj = ms.ToArray();
我将它提供给第二个 COM 并将其读回。结果被写入浏览器。
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename="test.dat");
Response.BinaryWrite(obj);
由于格式不正确,错误发生在第 2 个 COM 中。我去检查了原始字符串,这非常好。然后我将结果从 1st com 直接发送到浏览器并观察结果。似乎在路上的某个地方添加了额外的不可读字符。这些字符是什么,它们的用途是什么?如何防止它们使我的第二个 COM 停止运行?
不可读的字符是这样的:
NUL/SOH/NUL/NUL/NUL/FF/FF/FF/FF/SOH/NUL/NUL/NUL 等
有任何想法吗?
--答案--
使用
System.Text.Encoding.UTF8.GetBytes(theString)
而不是
BinaryFormatter.Serialize()