2010-07-06 49 views
0

我有以下幾點:如何從WCF REST讀取二進制數據/圖像

公用接口INorthwindSvc

<OperationContract()> 
<WebGet(UriTemplate:="EmployeePictureBytes?id={EmpId}")> 
Function GetEmployeePictureBytesById(ByVal EmpId As String) As Byte() 

末接口

我得到了(使用EF 4.0)作爲實施該方法如下:

Public Function GetEmployeePictureBytesById(ByVal EmpId As String) As Byte() Implements INorthwindSvc.GetEmployeePictureBytesById 
    Dim ctxt As New NorthwindEntities 
    Dim q = From c In ctxt.Employees 
      Where c.EmployeeID = EmpId 
      Select c.Photo 

    Return q.FirstOrDefault 
End Function 

我能夠接收字節當我訪問噸他從瀏覽器操作。如果我嘗試如下訪問相同的使用贏客戶端(發生錯誤,如直接顯示出來):

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Dim o As New WebClient 
    Dim b() As Byte = o.DownloadData(New Uri("http://localhost:8732/WcfWebHttpSvcLib/rest/EmployeePictureBytes?id=2")) 

    Dim ms As New MemoryStream() 
    ms.Write(b, 0, b.Length) 

    Dim original As New System.Drawing.Bitmap(ms) 'error: parameter is not valid 

End Sub 

我也試過用Image.FromStream相同。但是,仍然沒有運氣。

任何人都可以幫助我嗎?

感謝

回答

0

你不是倒帶的MemoryStream寫入之後,所以試圖讀取它將會失敗也就是說,即便這是不必要的,因爲你可以只寫:

im ms As New MemoryStream(b) 
' now call FromStream