- редактировать с более подробной информацией -
A (черный ящик) COM-объект возвращает мне строку.
2-й COM-объект ожидает эту же строку как byte [] в качестве ввода и возвращает byte [] с обработанными данными.
Он будет передан в браузер в виде загружаемого файла, не читаемого человеком, который будет загружен в автономное приложение на стороне клиента.
поэтому я получаю строку inputString из 1-го COM и преобразую ее в байт [] следующим образом
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, inputString);
obj = ms.ToArray();
Я передаю его второму СОМ и зачитываю обратно.
Результат записывается в браузер.
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", "attachment; filename="test.dat");
Response.BinaryWrite(obj);
Ошибка возникает во 2-м COM, потому что форматирование неверно.
Я пошел, чтобы проверить оригинальную строку, и это было прекрасно. Затем я закачал результат с первого ком непосредственно в браузер и посмотрел, что получилось. Оказалось, что где-то вдоль дороги добавляются дополнительные нечитаемые символы. Что это за персонажи, для чего они используются, и как я могу помешать им заставить мой 2-й СМР остановиться на месте?
Нечитаемые символы такого типа:
NUL / SOH / NUL / NUL / NUL / FF / FF / FF / FF / FF / SOH / NUL / NUL / NUL и т.д.
Есть идеи?
- Ответ -
Используйте
System.Text.Encoding.UTF8.GetBytes(theString)
а не
BinaryFormatter.Serialize()