以下是我的数据合同:
[DataContract]
public class Claim : IDisposable
{
[DataMember]
public int ClaimID { get; set; }
[DataMember]
public Stream ClaimImage { get; set; }
[DataMember]
public int PageNumber { get; set; }
public void Dispose()
{
if (ClaimImage != null)
{
ClaimImage.Close();
ClaimImage = null;
}
}
}
[DataContract]
public class ClaimInformation
{
[DataMember]
public List<string> Documents { get; set; }
[DataMember]
public int TotalPages { get; set; }
}
我有一个OperationContract,它接受一个“ClaimInformation”并返回一个“Claim”列表。这只是两个整数和一个分解为流的图像。
[OperationContract]
List<Claim> ProcessDocument(ClaimInformation ClaimInfo);
ProcessDocument调用类中的方法。
public List<Claim> ProcessDocument(ClaimInformation ClaimInfo)
{
List<Claim> FinishedClaimList = new List<Claim>();
Document doc = new Document();
FinishedClaimList = doc.ProcessDocument(ClaimInfo);
return FinishedClaimList;
}
这个方法太大了,我不能在这里发帖。但就是这样:
public List<Claim> ProcessDocument(ClaimInformation ClaimInfo)
{
在方法内部,它创建一个新的“Claim”并将其添加到“ClaimList”。
ClaimList.Add(new Claim { ClaimID = ClaimID, ClaimImage = this.GetStream(newdoc.FullName), PageNumber = pageNum });
最后,这就是我所说的一切:
OCREngine.IEngine engine = new OCREngine.EngineClient();
OCREngine.ClaimInformation CI = new ClaimInformation();
CI.Documents = ImageNames;
CI.TotalPages = cc.lbClaims.Items.Count;
ClaimList.Add(engine.ProcessDocument(CI));
我只是为该服务创建一个新客户端,然后实例化一个新的ClaimInformation DataContract。我设置了ImageNames属性,它只是一个字符串列表,然后我在TotalPages中添加一个整数。
关于我在这里做错了什么想法?
答案 0 :(得分:1)
这在WCF中是一个非常通用的例外,因此您需要enable WCF tracing才能获得更详细的信息。
只是猜测,但请查看this MSDN forum thread,其中列表包含超出WCF中默认内部对象限制的复杂对象。启用WCF跟踪后,您应该更好地了解正在进行的操作。