我通过 WCF 服务在另一台计算机上执行方法这里是我的代码的一个小例子:
对方法的调用:
return pipeProxy.SystemRequest(InstanceName, MethodName, Parameters);
这些是方法和接口:
[ServiceContract]
public interface IBlissRequest
{
[OperationContract]
object SystemRequest(string InstanceName, string MethodName, object[] Parameters);
}
public class BlissRequest : IBlissRequest
{
public object SystemRequest(string InstanceName, string MethodName, object[] Parameters)
{
return System21.BlissProcessingUnit.BPU.RequestFromIBC(InstanceName, MethodName, Parameters); ;
}
}
如您所见,我发送了 2 个字符串和一个对象数组,然后我返回了一个对象,此方法由不同的位置调用,并且对象可以不同,如果我通过此方法发送字符串或整数,一切正常,但是当我尝试发送列表时,事情变糟了,该方法无法执行。现在我阅读了DataContractSerializer
使用的标准,我需要将其转换为XmlSerializer
使其工作。我找到了http://msdn.microsoft.com/en-us/library/ms733901.aspx但我无法让我的示例正常工作。有人能指点我一个好的方向吗?
这是抛出的异常:
尝试序列化参数http://tempuri.org/:Parameters时出错。InnerException 消息是 'Type 'System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]',数据合同名称为 'ArrayOfstring: http:// /schemas.microsoft.com/2003/10/Serialization/Arrays '不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型列表中。有关更多详细信息,请参阅 InnerException。
内部异常:
{"Type 'System.Collections.Generic.List`1[[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' 数据合约名称为 'ArrayOfstring: http://schemas. microsoft.com/2003/10/Serialization/Arrays '不是预期的。考虑使用 DataContractResolver 或将任何静态未知的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将它们添加到传递给 DataContractSerializer 的已知类型。"}
需要发送的对象是:如果一切都可能,如果不是所有正常的 c# 之类的东西Lists