WebApp でホストされているプロキシからデータを受信するサービスがあります。DataMembers は Order=* で設定され、isRequired=true も追加しようとしました。問題は、シリアル化および逆シリアル化された情報の 60 フィールドのうち、同じ 3 つの String フィールドが一貫して欠落している (null) ことです。デバッグを実行したところ、データがクライアント ブラウザからプロキシ サービスにそのまま (JSON からシリアル化されたもの) 送信されることがわかりました。プロキシ サービスは、逆シリアル化後に 3 つのフィールドが欠落している Windows サービスにそれを送信します。
フィールドの順序を別の方法で設定しようとしましたが、何も機能していないようです。それは常に同じ 3 つの欠落しているフィールドの単純な文字列であり、多くの場合 10 ~ 20 文字を超えません。これらの厄介な DataMembers が、プログラムの他のすべての領域に正しく取り込まれていることにも言及する価値があります。
プロキシ サービスのコードは次のとおりです。
public TransactionResult Update(MyObj obj, String ItemOne, String ItemTwo)
{
MyService.MyServiceClient proxy = new MyService.MyServiceClient("WSHttpBinding_IMyService");
proxy.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
TransactionResult result = proxy.Update(obj, ItemOne, ItemTwo);
proxy.Close();
return result;
}
Windows サービスコードは
[OperationBehavior(Impersonation = ImpersonationOption.Required)]
public TransactionResult Update(MyObj obj, String ItemOne, String ItemTwo)
{obj is missing same 3 values at this point...}
オブジェクトの DataMembers の 1 つの例
[DataMember(Order = 56)]
public String ItemTwo
{
get
{
...
}
set
{
...
}
}