我有(幾)的WebAPI行動(S),其裝載的QuickFix日誌從數據庫(通過EF),並使用該私有方法將其返回爲CSV:StreamContent未加載結束
private HttpResponseMessage BuildCsvResponse<T>(T[] entries, Func<T, string> row, string fileName)
{
var response = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
var i = entries.Length;
foreach (var entry in entries)
{
i--;
writer.WriteLine(row(entry)); // simply call to overridden ToString() method
}
stream.Seek(0, SeekOrigin.Begin);
stream.Flush();
response.Content = new StreamContent(stream);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = fileName,
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/csv");
return response;
}
的問題是,內容永遠不會加載到末尾,並在隨後的符號上截斷不遠。爲什麼會發生?
可能是很重要的 - 所有的日誌字符串包含分隔符0x01
關閉你的'StreamWriter',然後在內存流上執行seek操作並且不調用flush。 – rene
@rene,謝謝你的回覆,但這沒有幫助。如果我關閉'作家'然後'stream.Seek'拋出'ObjectDisposedException' – oxfn