2014-07-22 3 views
0

WCF REST 서비스를 사용하려고하면 C#에서 WCF REST를 사용하면 오류가 발생합니다. C#에 있습니다. 메서드를 배열을 반환하는 경우 및 코드 형식을 잘 입력 변환 할 경우 사용하고 있습니다. 그러나 내가 List<>으로 돌아 오려고 노력했을 때 입력을 시도 할 때 오류가 발생했습니다.List <>

// 클라이언트 코드 (사용 배열) :

try 
      { 
       string ServiceUrl = "http://localhost:58092/Service1.svc/DataService/LoadAllDatas"; 
       WebRequest wreq = WebRequest.Create(ServiceUrl); 
       WebResponse wres = wreq.GetResponse(); 

       DataContractSerializer coll = new DataContractSerializer(typeof(DataServiceProxy.Product[])); 


       var arrProd = coll.ReadObject(wres.GetResponseStream()); 

       DataServiceProxy.Product[] prd = arrProd as DataServiceProxy.Product[]; 
       lstProd = new List<DataServiceProxy.Product>(prd); 
      } 
catch (Exception) 
      { 

       throw; 
      } 

// WCF 인터페이스 코드 :

내가 같은 WCF 서비스 목록에 노력하고
[ServiceContract] 
    public interface IDataService 
    { 
     [OperationContract] 
     [WebGet(BodyStyle=WebMessageBodyStyle.Wrapped,UriTemplate="LoadAllData")] 
     IList<Product> LoadAllData(); 

     [OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "LoadAllDatas")] 
     Product[] LoadAllDatas(); 

     [OperationContract] 
     [WebGet(BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "LoadAllColumnData/{Id}")] 
     IList<GdColumns> LoadAllColumnData(string Id); 
    } 

,

// 클라이언트 코드 :

try 
      { 
       string Service = "http://localhost:58092/Service1.svc/DataService/LoadAllData"; 
       WebRequest wreq = WebRequest.Create(Service); 
       WebResponse wres = wreq.GetResponse(); 

       DataContractSerializer coll = new DataContractSerializer(typeof(DataServiceProxy.IList<Product>)); 


       var arrProd = coll.ReadObject(wres.GetResponseStream()); 

       } 

위 코드는 (typeof(DataServiceProxy.List<Product>)) 부분에 오류를 발생시킵니다.

오류 : 나는 변화 시도

"The type or namespace 'List' does not exist in the namespace 'Web.DataServiceProxy'(are you missing an assembly reference?)" 

IList의 <이> <리스트> 여전히 Configure Service Reference없는 희망에 의해 나열하는 배열에서 서비스의 종류를 돌아갑니다.

어떻게 처리 할 수 ​​있습니까? 내가 틀린 곳?

+0

목록 유형은 DataServiceProxy에없는, 그 한정자를 제거합니다. – DavidG

답변

0

코드가 작동했습니다. WCF에서는 형식 개체와 반환 형식을 변경해야합니다. 이처럼

// 코드 :

string Service = "http://localhost:58092/Service1.svc/DataService/LoadAllData"; 
       WebRequest wreq = WebRequest.Create(Service); 
       WebResponse wres = wreq.GetResponse(); 

       DataContractSerializer coll = new DataContractSerializer(typeof(IList<DataServiceProxy.Product>)); 
       // MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(coll.)); 

       var arrProd = coll.ReadObject(wres.GetResponseStream()); 

       DataServiceProxy.Product[] prd = arrProd as DataServiceProxy.Product[]; 
       lstProd = new List<DataServiceProxy.Product>(prd); 

// WCF :

[OperationContract] 
    [WebGet(ResponseFormat = WebMessageFormat.Xml, UriTemplate = "LoadAllData")] 
    IList<Product> LoadAllData(); 
관련 문제