0

私は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

4

1 に答える 1