如何创建返回文件(.xlsx)的 WCF 服务

Posted

技术标签:

【中文标题】如何创建返回文件(.xlsx)的 WCF 服务【英文标题】:How to create WCF service which returns file ( .xlsx) 【发布时间】:2019-06-09 03:22:09 【问题描述】:

我在服务器位置有 xlsx 文件,我只想使用 WCF 服务将此文件返回给客户端。我不想作为流返回。

还有其他方法吗?

【问题讨论】:

我相信,如果您不使用序列化对象 (JSON/XML),流是从 WCF 服务传输数据的默认方式。为什么不想使用流?这是基于真实的推理还是仅仅因为缺乏技术理解? 由于我使用 K2 作为客户端应用程序,K2 无法理解流响应。 也许只是将文件作为字节数组返回? 能否添加您的 WCF 服务的代码(至少是创建流的部分)?假设 K2 理解 HTTP,我认为您将不得不使用流。我相信问题不在于 K2 不理解流(最后无论如何都是数据),而是您没有正确使用它。 【参考方案1】:

您必须返回 Stream 并设置以下标头:

WebOperationContext.Current.OutgoingResponse.ContentType = "application/octet-stream";
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", $"attachment; filename=\"<name of the file>\"");

客户应该知道如何处理。

【讨论】:

以上是关于如何创建返回文件(.xlsx)的 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何以 JSON 形式返回 WCF 服务 POST 响应

当操作返回元页面 html 时,如何更好地诊断 WCF 服务?

IIS 托管的 WCF 服务返回 HTTP 400 错误请求

如何从 WCF 服务返回 xml 响应

如何从安静的 WCF 服务返回对象列表

如何从 WCF 数据服务返回复杂类型?