WCF REST
에서 서비스 를 사용하려고합니다 C#
. 내가 사용할 때 메서드가 배열을 반환하고 변환하면 코드가 제대로 작동합니다. 그러나 내가 a로 반환하려고 할 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 인터페이스 코드 :
[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);
}
동일한 WCF 서비스로 List로 시도 할 때
// 고객 코드:
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 <>를 List <>로 변경하고 서비스 유형을 배열에서 목록으로 반환하려고 시도했습니다 Configure Service Reference
.
어떻게 처리 할 수 있습니까? 내가 틀렸어?
코드가 작동하도록 만들었습니다. 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();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다