我正在使用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
任何帮助都将不胜感激。
答案 0 :(得分:1)
您正在将UI对象传递给WCF服务。你应该做的只是将标签的文本值作为字符串传递,而不是完整的标签,因为它是过度杀伤和不好的做法。只发送你需要的东西。