从WCF REST服务自动下载pdf

时间:2015-03-26 19:32:46

标签: c# wcf rest download

我有一个WCF REST服务,它从客户端获取一个id,然后下载一个文件。我似乎是在我的回复正文中返回文件,但它不会自动下载它。

我之前从未尝试过这样做,所以我想知道是否有人能够提供一些指导。我正在将Stream返回给客户端。

这是我的OperationContract

[OperationContract]
[WebInvoke(Method = "GET",
    RequestFormat = WebMessageFormat.Json,
    UriTemplate = "/GetFile/{id}")]
Stream GetFile(string id);

这是我的GetFile方法:

public Stream GetFile(string BillingPeriodId)
{
    byte[] bytes = File.ReadAllBytes(@"C:\pdf-test.pdf");
    WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
    WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment;inline; filename=pdf-test.pdf");
    return new MemoryStream(bytes);
}

同样,我的服务似乎以200返回。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

请勿从服务中返回内存流。即使它看起来很好而且编译得很好,它也不起作用。从您的服务中返回Stream对象。

您的代码可能如下所示:

[WebInvoke(Method = "GET", UriTemplate = "GetFile/{BillingPeriodId}", RequestFormat = WebMessageFormat.Json)]
public Stream GetFile(string BillingPeriodId)
{
  WebOperationContext.Current.OutgoingResponse.ContentType = "application/pdf";
  WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment;inline; filename=pdf-test.
  Stream stream  = File.OpenRead(@"C:\pdf-test.pdf");   
  return stream;
}