У меня есть это очень простое DTO:
[DataContract]
public class DTO
{
[DataMember]
public byte[] Image {get; set; }
}
И это очень простое обслуживание:
[ServiceContract]
public interface IFooService
{
[WebGet(
UriTemplate = "",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
List<DTO> GetDTOs();
}
В моем global.asax у меня есть:
RouteTable.Routes.Add(new ServiceRoute("foo",
new WebServiceHostFactory(), typeof(FooService)));
Теперь, когда я вызываю это из своего браузера, я получаю массив байтов в формате JSON.Хорошо до сих пор.Теперь, как мне превратить этот массив байтов в изображение?
Или есть ли лучший способ сделать это?Я попытался изменить byte[]
на Stream
, но затем, когда я вызываю службу из Firefox, ответ пуст, несмотря на код состояния HTTP 200. Я использую Firebug и Fiddler.
Я недумаю, что это актуально, но поскольку слишком много информации никогда не причинит вреда никому, кто не был роботом, вот web.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</modules>
</system.webServer>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
</configuration>
В конечном счете, я предполагаю, что вопрос заключается в следующем: как вы возвращаете растровое изображение изWCF RESTful сервис, поэтому JavaScript, запущенный в браузере, может вывести его на экран?