現在、SOAP WCF サービスの 1 つで非常に奇妙な問題が発生しています。問題は、Visual Studio の ServiceReference-Tool がいくつかのメソッドの引数を変更することです。
例えば:
これが私のインターフェイス定義の場合 (抜粋):
namespace ****.PrimeTime.PrimeTime
{
[ServiceContract]
public interface IPrimeTimeWS
{
[...]
[OperationContract]
****.PrimeTime.BusinessObjects.CostDataset ReadCost(****.PrimeTime.BusinessObjects.SearchCostDataset searchDataset, ****.Framework.SharedComponents.Paging pagingInfo);
[OperationContract]
****.PrimeTime.BusinessObjects.CostDataset WriteCost(****.PrimeTime.BusinessObjects.CostDataset data, bool modifyRowState);
}
}
そして、これは私のサービス定義です(抜粋):
namespace ****.PrimeTime.PrimeTime
{
public class PrimeTimeWS : IPrimeTimeWS
{
[...]
public ****.PrimeTime.BusinessObjects.CostDataset WriteCost(****.PrimeTime.BusinessObjects.CostDataset data, bool modifyRowState)
{
[...]
}
public ****.PrimeTime.BusinessObjects.CostDataset ReadCost(****.PrimeTime.BusinessObjects.SearchCostDataset searchDataset, ****.Framework.SharedComponents.Paging pagingInfo)
{
[...]
}
}
}
wsdl ファイルは正しいです (WriteCost には、CostDataset と bool の 2 つのパラメーターがあります)。
しかし、クライアントにサービス参照を追加すると、次のようになります。
ReadCost メソッドは期待どおりに機能します。問題は、すべての (!) Write メソッドで、他のデータセットが TimeDataDataset に置き換えられることです。これは、使用されるデータセットに関係なく、書き込みメソッド以外のメソッドでは発生しません。
私はこの問題に1日近く取り組んでいますが、改善を達成できませんでした。
私はすでに試しました:
- サービス参照の削除と再作成
- サービスとクライアントのクリーニングと再構築
- 空のプロジェクトにサービス参照を追加する - >同じことが起こります
- CostDataset は、TimeDataDataset またはその他のデータセットと (構造的に) 違いはありません。
- パラメーターが正しくなるように Reference.cs を手動で変更すると、それは機能しますが、サービス参照を更新しない限り、変更が上書きされます。
何か案は?さらにソース コードが必要な場合は、提供できますが、ここにすべてのコードを入れたくなかったのは、少し多すぎるためです...