【发布时间】:2019-02-22 22:52:30
【问题描述】:
我现在遇到了一个非常奇怪的问题...我正在尝试从我的 web api 返回一个文件,但我得到一个 HTTP ERROR 500,即使流正在工作并且代码中没有抛出任何错误.
var doc = DocX.Load(...);
// ...
var ms = new MemoryStream();
doc.SaveAs(ms);
doc.Dispose();
return File(ms, "application/octet-stream");
流大小变为 22kb,但是当我导航到 api 的 url 时,我得到一个 HTTP 500,为什么?
谢谢。
【问题讨论】:
-
使用你的调试器,它的用途是什么
-
运行时抛出异常,您只是没有在调试器中捕获它。 (我假设您正在使用基于“流正在工作并且没有引发错误......”的调试器)。确保您正在打破所有 CLR异常(ctrl+alt+e)。
-
考虑按照此将您的流作为 HttpResponseMessage 而不是作为文件返回? stackoverflow.com/questions/26038856/…
-
您需要重置内存流的位置,然后再尝试将其发送到客户端:
ms.Position = 0;。您可以将文档直接写入 Request.Body 流。并返回一个 EmptyResult。 -
@Kalten 确实是这个问题,我忘了寻找流的开头。你应该回答这个话题还是我应该关闭它?。
标签: c# asp.net-web-api asp.net-core