在ASP NET MVC中打开没有Office Online(Web应用程序)的新格式Microsoft Office

时间:2016-03-09 10:50:47

标签: c# asp.net-mvc ms-office

我在打开新格式文档Microsoft Office(docx,xl​​sx等)时遇到问题。 我使用ASP NET MVC开发我的项目。

我写了新方法:

[HttpGet]
[AllowAnonymous]
public ActionResult DownloadFileNew(Guid Id)
{
    FileTable fileTable = _DocumentService.GetFile(Id);

    HttpResponseBase response = ControllerContext.HttpContext.Response;
    response.ContentType = fileTable.ContentType;
    response.AppendHeader("Content-Disposition", String.Format("attachment;filename={0}", fileTable.FileName));

    MemoryStream ms = new MemoryStream(fileTable.Data);
    FileStreamResult document = new FileStreamResult(ms, fileTable.ContentType);

    document.FileStream.Seek(0, SeekOrigin.Begin);
    document.FileStream.CopyTo(response.OutputStream, (int)document.FileStream.Length);

    response.Flush();
    return new EmptyResult();
}

但不要使用新格式,只使用旧格式(doc,xls等)。

当我尝试打开文档时,我会收到错误消息:" Excel Web app无法打开此文档..."

日志文件:

  • Metro库故障:ShipAssert位置:(0)条件:
    StackTrace:在uls.native.dll:
    (SIG = 35ebf2aa-983A-4c4a-A61B-a0d5e84ac5d0 | 2 | uls.native.pdb,
    偏移= 1CD84)在xlsrv.dll:
    (sig = 0beeafb2-5166-41c2-91f8-14cd1cedff75 | 2 | xlsrv.pdb,offset = E7D801) at xlsrv.dll :( offset = E7CF26)at xlsrv.dll:(offset = 5C2C8D)at

    xlsrv.dll :(偏移= E249F2)在xlsrv.dll :(偏移= E0FD6A)在
    xlsrv.dll :(偏移= E0DFEE)在xlsrv.dll :(偏移= DE0D20)在
    xlsrv.dll :(偏移= DD7D14)在xlsrv.dll :(偏移= DDC413)在
    xlsrv.dll :(偏移= DD931F)在xlsrv.dll :(偏移= DE0C28)在
    xlsrv.dll :(偏移= 1D9A6A)在xlsrv.dll :(偏移= 1D9B03)在
    xlsrv.dll :(偏移= 569A13)Watson存储桶参数:未初始化的
    ULS,ULSShipAssert12,2oxu,15.0.4569.0数据收集不是
    已启用标记' 2oxu'在配置或配置文件中没有 可用。没有向Watson Metro图书馆报告失败
    (0x80cb4204):

1 个答案:

答案 0 :(得分:1)

不确定您使用的ContentType是什么,但必须是

适用于docx文件

 Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"

适用于doc文件

Response.ContentType = "application/ms-word"

所有mime类型的列表here