从WCF函数返回DataContract时,我收到此错误:“接收HTTP响应时出错”

时间:2013-06-18 13:41:17

标签: c# wcf datacontract

以下是我的数据合同:

[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中添加一个整数。

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

1 个答案:

答案 0 :(得分:1)

这在WCF中是一个非常通用的例外,因此您需要enable WCF tracing才能获得更详细的信息。

只是猜测,但请查看this MSDN forum thread,其中列表包含超出WCF中默认内部对象限制的复杂对象。启用WCF跟踪后,您应该更好地了解正在进行的操作。