尝试序列化参数http://tempuri.org/:label时出错

时间:2016-04-12 11:10:55

标签: c# asp.net angularjs wcf asp.net-mvc-4

我正在使用WCF服务开发Web应用程序,我已创建服务并在客户端应用程序中使用该服务,我正在上传一个文本文件

在上传txt文件后匹配文件,我在客户端页面上收到以下错误

尝试序列化参数http://tempuri.org/:lblHide时出错。 InnerException消息是' Type' ASP.WCFApp_aspx'有数据 合同名称' WCFApp_aspx:http://schemas.datacontract.org/2004/07/ASP'不是预期的。考虑使用DataContractResolver或不添加任何类型 静态地知道已知类型的列表 - 例如,通过使用KnownTypeAttribute属性或将它们添加到传递给已知类型的列表中 DataContractSerializer的。&#39 ;.有关更多详细信息,请参阅InnerException。 ---> System.Runtime.Serialization.SerializationException:键入' ASP.WCFApp_aspx' 数据合同名称' WCFApp_aspx://schemas.datacontract.org/2004/07/ASP'不是预期的。考虑使用DataContractResolver或添加任何 静态地知道已知类型列表的类型 - 例如,通过使用KnownTypeAttribute属性或将它们添加到已知类型列表中 传递给DataContractSerializer。

请参阅下面的代码, WCFService.cs:

[OperationContract的]

    [ServiceKnownType(typeof(string))]

    [ServiceKnownType(typeof(List<string>[]))]

    string KeyFieldsMatch(List<string>[] lst, Label lblHide, string strConn);

IWCFService.svc.cs:

public class WCFService: IWCFService

    {

  public string KeyFieldsMatch(List<string>[] lst, Label lblHide, string strConn)

    {

        try

        {

            return objBAL.KeyFieldsMatch(lst, lblHide, strConn);

        }

        catch

        {

            throw new FaultException("Error....");

        }

    }
}

客户端:

WCFService.WCFServiceClient objBAL = new WCFService.WCFServiceClient();

 protected void btnSubmit_Click(object sender, EventArgs e)

    {

           List<string>[] list = new List<string>[2]

string[][] lst = new string[2][];

lst = list.Select(a => a.ToArray()).ToArray();

           string   KeyFieldsMatch =string.empty;

    KeyFieldsMatch = objBAL.KeyFieldsMatch(lst, lblHide, strConn);--Error coming at this location.
}

我正在使用basicHttpBinding

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

您正在将UI对象传递给WCF服务。你应该做的只是将标签的文本值作为字符串传递,而不是完整的标签,因为它是过度杀伤和不好的做法。只发送你需要的东西。