私はsvcutilを使用してプロキシクラスを作成していますが、私は異なるサービスに対して異なる結果を得ていることに気付きました。最初のサービスのための異なるサービス用にMessageContractAttributeまたはOperationContractAttributeを生成するためのsvcutil
svcutil http://server/SomeService.asmx
/l:c#
/syncOnly
/out:C:\ISomeService
/config:C:\ISomeService.config
/namespace:*,SomeServiceProxy
プロキシクラスは、このようなコードを生成します:
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
[System.ServiceModel.MessageContractAttribute(WrapperName = "GetSecondService", WrapperNamespace = "http://somenamespace.com", IsWrapped = true)]
public partial class GetSecondServiceRequest
{
...
}
:第2のサービスのための
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "4.0.0.0")]
[System.Runtime.Serialization.DataContractAttribute(Name="GetFirstService", Namespace="http://othernamespace.com")]
public partial class GetFirstServiceRequest : SomeServiceProxy.ResponseInfoBase
{
...
}
とプロキシクラスがこれを生成する
私はこのsvcutilコマンドを使用しています
1つのクラスがMessageContractAttributeでマークされ、もう1つがDataContractAttributでマークされる理由e? svcutilはどちらを使うのですか?コマンドは両方のサービスで同じですか?
これは、あるサービスがDataContractを使用している可能性があり、他のサービスがmessageContractを使用している可能性があるからです。両方のサービスの契約定義を公開できますか? –
@PankajKapare申し訳ありません申し訳ありませんが定義を公開することはできません。私はその2つのサービスを所有しておらず、nda許可のためにできません。あなたが何を言っているのか理解しています.2番目のインスタンスにDataContractAttributeを使用させる方法がありますか? – Iztoksson
'/ serializer:DataContractSerializer'を試してみることができますが、svcutilはデフォルトでDataContractsを生成しようとするので、結果が変わるのではないかと疑います。 - 質問は、なぜあなたも気にしていますか? (もしあなたが醜いコードを心配しているのであれば、生成されたコードはほとんどいつも醜いですが、その上に薄いラッパーレイヤーを使って隠すのです;) – nodots