2

我正在使用 JSON 格式运行 WCF Web 服务,如下所示。我的问题是响应格式是 Alowas Json 或 XML,但对于 GetImage,我想将图像返回为 mime-type image-png。知道如何在 WCF 中执行此操作吗?提前致谢。

[ServiceContract]
public interface IEditor
{
    [OperationContract]
    [WebInvoke(Method = "GET", UriTemplate = "/GetImage", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
    byte[] GetImage();

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetBounds", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
void GetBounds(out Rectangle bounds, out Point[] viewport);
4

1 回答 1

2
  1. 利用WebOperationContext.Current

  2. 返回Stream

你的方法应该是这样的

[OperationContract]
[WebInvoke(Method = "GET", UriTemplate = "/GetImage", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
public Stream GetImage()
{
    var m = new MemoryStream();
    //Fill m

    // very important!!! otherwise the client will receive content-length:0
    m.Position = 0;

    WebOperationContext.Current.OutgoingResponse.ContentType = "image/png";
    WebOperationContext.Current.OutgoingResponse.ContentLength = m.Length;
    return m;
}
于 2013-09-10T08:45:48.377 回答