Я пытаюсь отправить файлы в запрос, записав их в объект ответа. У меня в настоящее время есть два пути. Первый способ (с использованием FileStream
) работает, а второй способ (с использованием MemoryStream
) терпит неудачу. Я хотел бы знать, почему второй путь терпит неудачу, так как я не хочу постоянно создавать филе. Ниже приведен кодFileStream работает и MemoryStream не удается при отправке файлов
//This method does not work
MemoryStream ms = MethodA(bundleStream);
ms.CopyTo(Context.Response.Body); //<---Copy memory stream to response (Fails - object at other end is empty)
Другой способ работы. В этом методе я в основном пишу в файл, а затем открыть этот написанный файл и скопировать в 'Context.Response.Body'
//This method works.
MemoryStream ms = MethodB(bundleStream,"C:\\Mytestfile.exe"); //Wrtie to Mytestfile.exe
ftest = new FileStream("C:\\Mytestfile.exe", FileMode.Open); //Now open the same file that was written
ftest.CopyTo(Context.Response.Body); <---Copy file stream to response (Works)
ftest.Close();
Я хотел бы знать, почему первый метод не удается. По-видимому, когда я читаю входящий ответ, он пуст, а я могу легко прочитать ответ, когда используется второй метод.
Вы должны написать «Response.OutputStream», а не тело. – Igor
Просьба указать [MCVE] (потому что проблема, скорее всего, в 'MethodA', которая возвращает нечитаемый/пустой поток). Также базовый поиск https://www.bing.com/search?q=c%23%20memorystream%20empty обеспечивает немедленный ответ http://stackoverflow.com/questions/6130469/memory-stream-is-empty - так что вы можете уточните, что вы попробовали, прежде чем задавать вопрос. –
@AlexeiLevenkov, если вы заметили, что ответ не имеет никакого отношения к методу или методу B. Это связано с поиском. Заметный ответ указывает на это. Причина, по которой я удалил метод A и methodB, заключалась в том, чтобы сделать этот вопрос коротким и кратким. Недостаток недопустим. – Rajeshwar