我有一个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
返回。有人可以帮忙吗?
答案 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;
}