mam to bardzo prosty dto:Wracając obraz z relaksującego usługi WCF
[DataContract]
public class DTO
{
[DataMember]
public byte[] Image {get; set; }
}
i to bardzo prostą obsługę:
[ServiceContract]
public interface IFooService
{
[WebGet(
UriTemplate = "",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
List<DTO> GetDTOs();
}
W moim global.asax, mam:
RouteTable.Routes.Add(new ServiceRoute("foo",
new WebServiceHostFactory(), typeof(FooService)));
Teraz, gdy nazywam to przeglądarką, otrzymuję tablicę bajtów w formacie JSON. Dobre jak dotąd. Teraz, jak włączyć tę tablicę bajtów w obraz?
A może jest lepszy sposób na obejście tego? Próbowałem zmienić byte[]
na Stream
, ale kiedy zadzwonię do usługi z Firefoksa, odpowiedź jest pusta, mimo że kod statusu HTTP wynosi 200. Używam Firebuga i Fiddlera.
Nie sądzę, że to istotne, ale ponieważ zbyt wiele informacji nie zaszkodzi nikomu, kto nie był robotem, oto 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>
Ostatecznie myślę, pytanie brzmi: jak zrobić zwracasz bitmapę z usługi WCF RESTful, więc JavaScript działający w przeglądarce może wyrzucić go na ekranie?
Nie mogę zrozumieć logiki głosowania w dół tutaj. –