我有一些xml数据。我已经制作了一个基于asp.net soap的webservice,它将xml作为字节缓冲区应用xsl转换并将其转换为docx文件。但是当我使用响应对象返回docx文件时,我得到一个错误,客户端发现了application / vnd-word类型的响应,但是它期待text / xml。
服务代码段在xsl转换后推送文档文件
Context.Response.Clear();
Context.Response.ClearHeaders();
Context.Response.ContentType =“application / vnd.openxmlformats- officedocument.wordprocessingml.document”;
Context.Response.AddHeader(“Content-Disposition”,“attachment; filename =”+“test.docx”); Context.Response.Flush();
Context.Response.End();
答案 0 :(得分:1)
这是通过网络服务电话吗?如果您通过Web服务代理客户端进行调用,那么它需要SOAP响应而不是二进制流。您需要为调用者可以理解的SOAP兼容响应建模。
设置内容类型和内容处置使浏览器能够执行“正确”操作(即打开文件保存对话框),但自定义客户端(httpwebclient,Web服务代理等)不会构建这些行为-in所以你需要添加遗漏的东西。
答案 1 :(得分:0)
你实际上在哪里写数据?
哦,试试这个......(如果你的.docx是一个结构良好的办公室openxml文件)
Response.Clear();
Response.ContentType = "application/msword";
Response.AppendHeader("Content-Type", "application/msword");
Response.AppendHeader("Content-disposition", String.Format("attachment; filename={0}", FileName));
Response.BinaryWrite(DataBytes);
Response.End();
Response.Flush();
答案 2 :(得分:0)
Context.Response.Clear();
Context.Response.ContentType = "application/msword";
Context.Response.AddHeader("Content-Type", "application/msword");
Context.Response.AddHeader("Content-Disposition", "attachment; filename=" + "test.docx");
Context.Response.End();
Context.Response.Flush();