WCF 서비스를 통해 사용자 지정 개체의 목록을 역 직렬화하려는로드 블록을 실제로 봤습니다. 그것은 .NET 4를 사용하고 있습니다. 다른 네임 스페이스를 사용하려면 어떻게해야합니까? 내 ASP.NET 응용 프로그램이 3.5에서 실행 중이며 참조 설정이 정상입니다. 그게 문제일까요? 어떻게해야합니까?사용자 지정 개체 목록을 비 직렬화하는 방법
내 서비스를 다음과 같이 설정:
계약
namespace MyDomain.Services.Report
{
[ServiceContract(Name = "ICompanyReport")]
public interface ICompanyReport
{
[OperationContract]
byte[] GetFooReport(string fooName);
}
[Serializable]
[DataContract(Name="FooReportRecord", Namespace="MyDomain.com"]
public class FooReportRecord
{
[DataMember]
public int ID {get; set;}
[DataMember]
public string Name {get; set;}
}
}
svc.cs
public class CompanyReport: ICompanyReport
{
public byte[] GetFooReport(string fooName)
{
var data = new List<FooReportRecord>();
// get data based on fooName and populate data
var ms = new MemoryStream();
var bf = new BinaryFormatter();
bf.Serialize(ms, data);
return ms.ToArray();
}
}
클라이언트 측 :
var ls = proxy.GetFooReport("bar");
var bf = new BinaryFormatter();
var ms = new MemoryStream(ls);
// Unable to find assembly MyDomain.Services.Report error is thrown
var reportData = (List<FooReportRecord>)bf.Deserialize(ms);
왜 FooReportRecord가 아닌 byte []가 반환됩니까? – Phil
"내 ASP.NET 응용 프로그램이 3.5에서 실행 중"이라면 ASP.NET 웹 사이트에서 호스팅되는 WCF 서비스가 무엇입니까? 또는 ASP.NET 응용 프로그램이 클라이언트입니까? 나는 여기서 클라이언트를 의미하는 것 같아요. – EdmundYeung99
바이트 []는 가능한 한 객체 목록을 줄이려고 시도했습니다. 테스트 할 때 바이트 배열과 실제 목록을 사용하여 더 많은 결과를 얻을 수있었습니다. – HapiDjus