我真的遇到了試圖通過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);
你爲什麼要返回byte []而不是FooReportRecord? – Phil 2013-03-18 22:54:01
當您說「我的ASP.NET應用程序在3.5上運行」時,您的WCF服務託管在ASP.NET網站中嗎?或者ASP.NET應用程序是客戶端?我猜你在這裏的意思是客戶端 – EdmundYeung99 2013-03-18 23:20:14
字節[]是儘量壓扁對象列表的嘗試。當我測試時,我可以使用字節數組與實際列表獲得更多結果。 – HapiDjus 2013-03-19 21:47:03