サービス メタデータからの WCF クライアントの生成
ここでは、Svcutil.exe の各種のスイッチを使用して、メタデータ ドキュメントからクライアントを生成する方法を説明します。
メタデータ ドキュメントは、永続ストレージに保存したり、オンラインで取得したりできます。 オンライン取得では、WS-MetadataExchange プロトコルまたは DISCO (Microsoft Discovery) プロトコルに従います。 Svcutil.exe は、メタデータを取得するために次のメタデータ要求を同時に発行します。
指定されたアドレスへの WS-MetadataExchange (MEX) 要求
指定された
/mex
付きアドレスへの MEX 要求指定されたアドレスへの (ASP.NET Web サービスからの DiscoveryClientProtocol を使用した) DISCO 要求。
Svcutil.exe は、Web サービス記述言語 (WSDL: Web Services Description Language) ファイル、またはサービスから受け取ったポリシー ファイルに基づいてクライアントを生成します。 ユーザー プリンシパル名 (UPN) は、ユーザー名、"@"、完全修飾ドメイン名 (FQDN) を順に連結して生成されます。 ただし、Active Directory に登録されているユーザーの場合、この形式は無効であり、ツールによって生成される UPN を使用すると、Kerberos 認証でエラーが発生し、エラー メッセージ "ログインに失敗しました" が表示されます。この問題を解決するには、このツールによって生成されたクライアント ファイルを手動で修正する必要があります。
svcutil.exe [/t:code] <metadataDocumentPath>* | <url>* | <epr>
型の参照と共有
オプション | 説明 |
---|---|
/reference:<ファイル パス> | 指定されたアセンブリの型を参照します。 クライアントの生成時に、このオプションを使用して、インポートするメタデータを表す型を含むアセンブリを指定します。 短縮形 : /r |
/excludeType:<型> | 参照されるコントラクト型から除外する完全修飾またはアセンブリ修飾の型名を指定します。 短縮形 : /et |
シリアライザーの選択
オプション | 説明 |
---|---|
/serializer:Auto | シリアライザーを自動的に選択します。 これは、DataContract シリアライザーを使用します。 この処理が失敗すると、XmlSerializer が使用されます。短縮形: /ser:Auto |
/serializer:DataContractSerializer | シリアル化と逆シリアル化に DataContract シリアライザーを使用するデータ型を生成します。短縮形 : /ser:DataContractSerializer |
/serializer:XmlSerializer | シリアル化と逆シリアル化に XmlSerializer を使用するデータ型を生成します。短縮形 : /ser:XmlSerializer |
/importXmlTypes | DataContract 型として非 DataContract 型をインポートする IXmlSerializable シリアライザーを構成します。短縮形 : /ixt |
/dataContractOnly | DataContract 型に対してのみコードを生成します。 ServiceContract 型が生成されます。このオプションにはローカル メタデータ ファイルだけを指定する必要があります。 短縮形 : /dconly |
クライアントの言語の選択
オプション | 説明 |
---|---|
/language:<言語> | コード生成に使用するプログラミング言語を指定します。 Machine.config ファイルに登録された言語名か、CodeDomProvider から継承するクラスの完全修飾名のいずれかを指定します。 値は、c#、cs、csharp、vb、vbs、visualbasic、vbscript、javascript、c++、mc、cpp になります。 既定値: csharp 短縮形 : /l 詳細については、CodeDomProvider クラスを参照してください。 |
クライアントの名前空間の選択
オプション | 説明 |
---|---|
/namespace:<文字列,文字列> | WSDL または XML スキーマの targetNamespace から共通言語ランタイム (CLR: Common Language Runtime) 名前空間へのマッピングを指定します。 targetNamespace にワイルドカード (*) を使用すると、マッピングを明示的に指定せずにすべての targetNamespaces がその CLR 名前空間にマップされます。メッセージ コントラクト名が操作名と競合しないようにするには、型参照を 2 つのコロン :: で修飾するか、名前を一意にします。既定 : DataContracts のスキーマ ドキュメントのターゲット名前空間から派生します。 既定の名前空間は、生成される他のすべての型に使用されます。短縮形 : /n |
データ バインディングの選択
オプション | 説明 |
---|---|
/enableDataBinding | データ バインディングを有効にするために、すべての INotifyPropertyChanged 型に DataContract インターフェイスを実装します。短縮形 : /edb |
構成ファイルの生成
オプション | 説明 |
---|---|
/config:<構成ファイル> | 生成される構成ファイルの名前を指定します。 既定値: output.config |
/mergeConfig | 既存のファイルを上書きする代わりに、生成される構成ファイルを既存のファイルにマージします。 |
/noConfig | 構成ファイルを生成しません。 |