首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用NPOI工作簿检索MemoryStream时抛出的MemoryStream

使用NPOI工作簿检索MemoryStream时抛出的MemoryStream
EN

Stack Overflow用户
提问于 2015-10-13 11:01:15
回答 1查看 229关注 0票数 0

当我点击这个API时,会抛出一个带有无用堆栈跟踪的TaskCanceledException。我正在使用这个库:https://npoi.codeplex.com/

代码语言:javascript
运行
复制
public class TestController : ApiController
    {
        [HttpGet]
        public HttpResponseMessage Test()
        {
            var templateWorkbook = new XSSFWorkbook();
            var sheet = templateWorkbook.CreateSheet("TestSheet");
            IRow dataRow = sheet.CreateRow(4);
            var cell = dataRow.CreateCell(0);
            cell.SetCellValue(77);

            Stream memoryStream = new MemoryStream();
            templateWorkbook.Write(memoryStream);

            var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StreamContent(memoryStream)
            };
            httpResponseMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            httpResponseMessage.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") { FileName = "test.xlsx" };
            return httpResponseMessage;
        }
    }

我做错了什么?这是我的堆栈跟踪:

TaskCanceledException:一个任务被取消了。 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +165 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 System.Web.Http.Owin.d__20.MoveNext() +666 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +137 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task任务) +25 System.Web.Http.Owin.d__0.MoveNext() +1814 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +137 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext() +187 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +561 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +137 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Security.Infrastructure.d__0.MoveNext() +561 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +137 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Cors.d__0.MoveNext() +856 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +137 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__5.MoveNext() +187 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task任务) +99 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task任务) +58 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.d__2.MoveNext() +185 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar) +69 Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar) +64 System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +380 System.Web.HttpApplication.ExecuteStep(IExecutionStep step,布尔& completedSynchronously) +155

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-16 07:44:20

我找到了解决办法。

将内存流复制到另一个内存流并将搜索位置重置为0似乎可以修复它:

代码语言:javascript
运行
复制
MemoryStream memoryStream = new MemoryStream();
templateWorkbook.Write(memoryStream);
MemoryStream copy = new MemoryStream(memoryStream.ToArray());
copy.Seek(0, SeekOrigin.Begin);

在我看来像是NPOI图书馆里的一个bug ..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33100956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档