2015-02-07 62 views
0

我想在(Asp.Net的图像控件)客户端显示图像(.jpeg)。这段代码有什么问题?使用WCF Rest服务显示图像

我的休息服务代码如下,其中我从数据库中获取ImagePath。

public Stream getImage(string width, string height) 
{   
    int iRecordid = 1;   
    var q = from c in db.TblNames 
      where c.RecordId == iRecordid 
      select new { c.ImgName, c.ImgPath }; 

    foreach (var obj1 in q) 
    { 
     sImageName = obj1.ImgName; 
     sImagePath = obj1.ImgPath; 
    }   
    MemoryStream ms = new MemoryStream(); 

    ms.Position = 0; 
    return ms; 
} 

,我使用在客户端该服务就像

public void getImage() 
{ 
    string url = @"http://localhost:50353/CustomerService.svc/getImage/100/200"; 

    var service = new ServiceReference(url); 

    WebClient wc = new WebClient(); 

    byte[] res1 = wc.DownloadData(url); 

    Stream res2 = new MemoryStream(res1); 

    DataContractJsonSerializer res3 = new DataContractJsonSerializer(typeof(ImageMap)); 
    string ss = res3.ReadObject(res2).ToString(); 
    Image1.ImageUrl = ss; 
} 

我收到错误,如

出现错误反序列化类型的System.Web.UI的对象。 WebControls.ImageMap。遇到意外字符'ÿ'。

+0

至于我对WCF休息服务的新手。 – Sheeba 2015-02-07 05:44:06

+1

这是一个类似的问题,请通过答案:http://stackoverflow.com/questions/13445227/restful-service-returns-there-was-an-error-checking-start-element-of-object-of – 2015-02-07 05:58:16

回答

1

试试下面的代码休息服务端

public string getImage(string width, string height) 
     { 

     int iRecordid = 1; 

     var q = from c in db.MasterStructures 
       where c.RecordId == iRecordid 
       select new { c.ImgName, c.ImgPath }; 

     foreach (var obj1 in q) 
     { 
      sImageName = obj1.ImgName; 
      sImagePath = obj1.ImgPath; 
     }   
     MemoryStream ms = new MemoryStream(); 

     ms.Position = 0; 
     WebOperationContext.Current.OutgoingResponse.ContentType = "image/jpeg"; 
     return sImagePath; 

}