1

这是我的数据合同:

[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。

关于我在这里做错了什么的任何想法?

4

1 回答 1

1

这是 WCF 中一个非常通用的异常,因此您需要启用 WCF 跟踪以获取更详细的信息。

只是猜测,但请查看此 MSDN 论坛线程,其中列表包含超出 WCF 中默认内部对象限制的复杂对象。启用 WCF 跟踪后,您应该对正在发生的事情有一个更好的了解。

于 2013-06-18T15:49:54.243 回答