I have a simple WCF REST method that will return an image/file/etc in a byte array:

[OperationContract]
[WebGet(UriTemplate = "TestMethod")]
byte[] TestMethod();

The service contract is bound to a webHttpBinding with the following behavior:

<endpointBehaviors>
  <behavior name="webHttpBehavior">
    <webHttp defaultOutgoingResponseFormat="Json" />
  </behavior>
</endpointBehaviors>

The method works fine, except the byte array is formatted like:

[25,15,23,64,6,5,2,33,12,124,221,42,15,64,142,78,3,23]

If I remove the attribute defaultOutgoingResponseFormat="Json", the service defaults to XML formatting, and the result is encoded in Base64 like:

GQ8XQAYFAiEMfN0qD0COTgMX

which saves on data transfer, especially when the data get large.

How can I enable Base64 encoding for the JSON output format?

Edit
Report