2010-07-06 3 views
0

je les suivantes:Comment lire les données/image binaire de WCF REST

Interface publique INorthwindSvc

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

Fin Interface

J'obtenu le procédé mis en oeuvre (en utilisant EF 4.0) comme suit:

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 

Je suis en mesure de recevoir des octets lorsque j'accède t L'opération du navigateur. Si je tente d'accéder à la même chose en utilisant Win Client comme suit (une erreur se produit comme indiqué en ligne):

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 

J'ai essayé aussi la même chose en utilisant Image.FromStream. Mais, toujours pas de chance.

Quelqu'un peut-il m'aider à ce sujet?

grâce

Répondre

0

Vous n'êtes pas rembobiner le MemoryStream après avoir écrit, donc essayer de lire, il échouera Cela dit, même c'est inutile, comme vous pourriez simplement écrire:

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