私は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 メッセージは、データ コントラクト名が '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 ' is not expected. DataContractResolver の使用を検討するか、既知の型のリストに静的に認識されていない型を追加します。たとえば、KnownTypeAttribute 属性を使用するか、それらをDataContractSerializer に渡される既知の型。"}
送信する必要があるオブジェクトは次のとおりです。可能であればすべて、通常の c# のようなすべてではない場合Lists