クライアント プロキシ クラスを生成する必要があるライブラリがあり、ローカル ボックスでこのコマンドとサービスを実行すると、既存のコードが正常に動作します。
svcutil.exe /config:thn /r:Citi.Rbcs.BusGn.dll /r:Citi.Rbcs.Buscm.dll net.tcp://localhost:8088/RbcThnService/mex
クライアント プロキシは正常に生成されます。RbcThnService はインターフェイス IRbcThinService を使用します。次に、次のようにそのインターフェイスに新しいメソッドを追加すると
[OperationContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]
[FaultContract(typeof (GenericException))]
[FaultContract(typeof (CustomException))]
RbcCustomerStructure GetCustomerStructures(string CustomerId, short QueueId, DateTime dateUpdate, RbcSecurityContext securityContext);
次に、サービスを再構築してインストールし、クライアント プロキシを再生成しようとすると、
There is an error in the XML document.
The value for the 'type' attribute is invalid - 'q32:ArrayOfstring' is an invalid value for the 'type' attribute.
宣言で特定の型が見つからないように聞こえますが、奇妙なことに、インターフェイスには元のライブラリとまったく同じ署名を持つ別のメソッドがあり、クライアント プロキシが問題なく生成できるようになっています。したがって、既存のメソッドと同じメソッドを新しい名前で作成しているだけです。
誰か提案はありますか?
更新: 既存のメソッドの 1 つでもコメントアウトして再試行すると、プロットが厚くなります。新しいメソッドで動作します。ほんの一握りのメソッドと新しいメソッドにそれを取り除いてみましたが、うまくいきます。他の方法を1つずつ徐々に再導入しましたが、最後の方法を追加するまで機能し続け、エラーが発生しました。
興味深いことに、元のメソッドの 1 つをコメントアウトし、それが機能するようになりました。次に、2 番目のダミーの NEW メソッドを作成しましたが、同じエラーが発生しましたが、ArrayOfstring の代わりに別の型が原因で失敗していました。
したがって、間違ったツリーを鳴らしていない場合は、インターフェース定義にあるメソッドの数、または生成された XML の長さに関係しているようです。注意すべき制限はありますか?