Stefan
Stefan

Reputation: 3

MemoryStream readtimeout during generate Excel file

I created an excel file. It saved correctly on the disk, but now I would like to download it via the browser. I have problem with stream. I have exception: ReadTimeout = stream.ReadTimeout threw an exception of type System.InvalidOperationException

My code:

...
MemoryStream stream = new MemoryStream();
using (ExcelPackage xlPackage = new ExcelPackage(stream))
{
    ExcelWorksheet worksheet;
    worksheet = xlPackage.Workbook.Worksheets.Add(name);

    worksheet.Name = name;

    for (int i = 0; i < nameColumns.Length; i++)
    {
        worksheet.Cells[1, i + 1].Value = nameColumns[i];
    }
    xlPackage.Save();
}

stream.Position = 0;
var contentType = "application/octet-stream";
var fileName = "fileName.xlsx";
return Ok(File(stream, contentType, fileName));

screenshot with error

Upvotes: 0

Views: 1484

Answers (1)

Caius Jard
Caius Jard

Reputation: 74625

Don't worry about it; you're seeing that because the debugger calls every property to get its value so it can show you the value on the tooltip, but those properties throw an exception on a MemoryStream because a MemoryStream cannot time out.

MemoryStream has to have those properties because all Streams have them (anything that has Stream as a parent class has these properties), but they don't make sense in the context of a memory stream.

You code doesn't access them when it actually runs so it's fine to ignore them

This is one thing to bear in mind for the future- the debugger accesses everything when you ask it to show you an object, which means it probably experience a lot of exceptions that your code never will, unless your code calls the same thing the debugger did (if your code had eg stream.ReadTineout = 10 it would also get an error)

Upvotes: 2

Related Questions