2012-10-08 34 views
3

正如話題所述,我遇到問題以從我的Wcf休息服務接收圖片。終點似乎沒問題,但我只收回空數據。無法從WCF Rest服務返回圖片

的Web.config:

<service name="RestService.RestServiceImpl" behaviorConfiguration="ServiceBehaviour"> 
    <endpoint address ="" binding="webHttpBinding"      contract="RestService.IRestServiceImpl" behaviorConfiguration="web"/> 
     <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 
    </service> 

SVC:

 [OperationContract] 
    [WebGet(UriTemplate = "GetImage", RequestFormat = WebMessageFormat.Xml, ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Bare)] 
    Stream GetImage(); 

    public Stream GetImage() 
    { 
     var ms = new MemoryStream(); 
     Resource1.batman.Save(ms, System.Drawing.Imaging.ImageFormat.Png); 
     WebOperationContext.Current.OutgoingResponse.ContentType = "image/png"; 
     return ms; 
    } 

標記:

<%@ ServiceHost Language="C#" Debug="true" Service="RestService.RestServiceImpl" CodeBehind="RestServiceImpl.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory"%> 
+4

嘗試在返回之前將內存流的位置設回0。你是否使用瀏覽器的這個調用? 爲什麼不返回圖像的字符串位置並讓瀏覽器加載它? – Erix

+1

謝謝Erix!設置ms.Position = 0;在返回之前做了詭計! – Krika

+2

不客氣。如果你不介意標記它,我已經添加了這個答案。 (這是一個答案之前,但一個國防部刪除它的一些愚蠢的原因) – Erix

回答

3

嘗試返回之前設定存儲器流的位置回到0。