Generieren eines WCF-Clients aus DienstmetadatenGenerating a WCF Client from Service Metadata

In diesem Thema wird beschrieben, wie die verschiedenen Schalter in Svcutil.exe verwendet werden, um aus Metadatendokumenten Clients zu generieren.This topic describes how to use the various switches in Svcutil.exe to generate clients from metadata documents.

Die Metadatendokumente können sich in einem permanenten Speicher befinden oder online abgerufen werden.Metadata documents can be on a durable storage or be retrieved online. Der Onlineabruf erfolgt gemäß dem WS-MetadataExchange-Protokoll oder Microsoft Discovery (DISCO)-Protokoll.Online retrieval follows either the WS-MetadataExchange protocol or the Microsoft Discovery (DISCO) protocol. Svcutil.exe gibt zum Abruf von Metadaten die folgenden Metadatenanforderungen gleichzeitig aus.Svcutil.exe issues the following metadata requests simultaneously to retrieve metadata:

  • WS-MetadataExchange (MEX)-Anforderung an die angegebene AdresseWS-MetadataExchange (MEX) request to the supplied address.

  • MEX-Anforderung an die angegebene Adresse mit angefügtem /mexMEX request to the supplied address with /mex appended.

  • DISCO-Anforderung (mithilfe der DiscoveryClientProtocol von ASP.NET Web Services) an die angegebene Adresse.DISCO request (using the DiscoveryClientProtocol from ASP.NET Web services) to the supplied address.

Svcutil.exe generiert den Client auf der Basis der vom Dienst empfangenen WSDL (Web Services Description Language)-Datei oder Richtliniendatei.Svcutil.exe generates the client based on the Web Services Description Language (WSDL) or policy file received from the service. Der Benutzerprinzipalname (UPN) wird generiert, durch die Aneinanderreihung von Benutzername, "@", und fügen einen vollständig qualifizierten Domänennamen (FQDN).The user principal name (UPN) is generated by concatenating the user name with "@" and then adding a fully-qualified domain name (FQDN). Allerdings für Active Directory registrierte Benutzer dieses Format ist ungültig und der UPN, der das Tool generiert verursacht einen Fehler bei der Kerberos-Authentifizierung mit der folgenden Fehlermeldung: der Anmeldeversuch ist fehlgeschlagen.However, for users who registered on Active Directory, this format is not valid and the UPN that the tool generates causes a failure in the Kerberos authentication with the following error message: The logon attempt failed. Um dieses Problem zu beheben, sollten Sie die von diesem Tool generierte Clientdatei manuell berichtigen.To resolve this problem, manually fix the client file that the tool generated.

svcutil.exe [/t:code]  <metadataDocumentPath>* | <url>* | <epr>  

Verweisen auf Typen und Freigeben von TypenReferencing and Sharing Types

OptionOption BeschreibungDescription
/ reference:<Dateipfad >/reference:<file path> Verweist auf Typen in der angegebenen Assembly.References types in the specified assembly. Beim Generieren von Clients können Sie diese Option verwenden, um Assemblys anzugeben, die unter Umständen die Typen mit den zu importierenden Metadaten enthalten.When generating clients, use this option to specify assemblies that might contain types that represent the metadata being imported.

Kurzform: /r.Short form: /r
/excludeType:<type>/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen an, der aus den verwiesenen Vertragstypen ausgeschlossen werden soll.Specifies a fully-qualified or assembly-qualified type name to be excluded from referenced contract types.

Kurzform: /et.Short form: /et

Wählen eines SerialisierungsprogrammsChoosing a Serializer

OptionOption BeschreibungDescription
/serializer:Auto/serializer:Auto Wählt die Serialisierung automatisch aus.Automatically selects the serializer. Hierbei wird das DataContract-Serialisierungsmodul verwendet.This uses the DataContract serializer. Wenn dieser Versuch fehlschlägt, wird XmlSerializer verwendet.If this fails, the XmlSerializer is used.

Kurzform: /ser:Auto.Short Form: /ser:Auto
/serializer:DataContractSerializer/serializer:DataContractSerializer Generiert Datentypen, die das DataContract-Serilisierungsprogramm für die Serialisierung und die Deserialisierung verwenden.Generates data types that use the DataContract serializer for serialization and deserialization.

Kurzform: /ser:DataContractSerializer.Short form: /ser:DataContractSerializer
/serializer:XmlSerializer/serializer:XmlSerializer Generiert Datentypen, die XmlSerializer für die Serialisierung und die Deserialisierung verwenden.Generates data types that use the XmlSerializer for serialization and deserialization.

Kurzform: /ser:XmlSerializer.Short form: /ser:XmlSerializer
/importXmlTypes/importXmlTypes Das DataContract-Serialisierungsprogramm wird so konfiguriert, dass Typen, die keine DataContract-Typen sind, als IXmlSerializable-Typen importiert werden.Configures the DataContract serializer to import non-DataContract types as IXmlSerializable types.

Kurzform: /ixt.Short form: /ixt
/dataContractOnly/dataContractOnly Generiert nur Code für DataContract-Typen.Generates code for DataContract types only. ServiceContract-Typen werden generiert.ServiceContract types are generated.

Sie sollten für diese Option nur lokale Metadatendateien angeben.You should specify only local metadata files for this option.

Kurzform: /dconly.Short form: /dconly

Auswählen einer Sprache für den ClientChoosing a Language for the Client

OptionOption BeschreibungDescription
/ Language:<Language >/language:<language> Gibt die Programmiersprache an, die zur Codegenerierung verwendet werden soll.Specifies the programming language to use for code generation. Sie können entweder einen in der Datei Machine.config registrierten Sprachnamen oder den vollqualifizierten Namen einer Klasse angeben, der von CodeDomProvider abgeleitet ist.Provide either a language name registered in the Machine.config file or the fully-qualified name of a class that inherits from CodeDomProvider.

Werte: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cppValues: c#, cs, csharp, vb, vbs, visualbasic, vbscript, javascript, c++, mc, cpp

Standard: csharpDefault: csharp

Kurzform: /l.Short form: /l

Weitere Informationen finden Sie unter CodeDom-Anbieters ab Klasse.For more information, see CodeDomProvider Class.

Auswählen eines Namespace für den ClientChoosing a Namespace for the Client

OptionOption BeschreibungDescription
/ Namespace:<Zeichenfolge, Zeichenfolge >/namespace:<string,string> Gibt eine Zuordnung von einem WSDL- oder XML-Schema-targetNamespace zu einem CLR (Common Language Runtime)-Namespace an.Specifies a mapping from a WSDL or XML Schema targetNamespace to a common language runtime (CLR) namespace. Durch die Verwendung eines Platzhalters (*) für targetNamespace werden alle targetNamespaces ohne eine explizite Zuordnung diesem CLR-Namespace zugeordnet.Using a wildcard (*) for the targetNamespace maps all targetNamespaces without an explicit mapping to that CLR namespace.

Um zu gewährleisten, dass der Nachrichtenvertragsname nicht mit dem Vorgangsnamen in Konflikt steht, sollten Sie den Typverweis entweder mit zwei Doppelpunkten (::) angeben oder sicherstellen, dass die Namen einmalig sind.To make sure that the message contract name does not collide with the operation name, either qualify the type reference with double colons (::) or make sure the names are unique.

Standard: Wird vom Zielnamespace des Schemadokuments für DataContracts abgeleitet.Default: Derived from the target namespace of the schema document for DataContracts. Der Standardnamespace wird für alle anderen generierten Typen verwendet.The default namespace is used for all other generated types.

Kurzform: /n.Short form: /n

Auswählen einer DatenbindungChoosing a Data Binding

OptionOption BeschreibungDescription
/enableDataBinding/enableDataBinding Implementiert die INotifyPropertyChanged-Schnittstelle für alle generierten DataContract-Typen, um die Datenbindung zu ermöglichen.Implements the INotifyPropertyChanged interface on all DataContract types to enable data binding.

Kurzform: /edb.Short form: /edb

Generieren der KonfigurationGenerating Configuration

OptionOption BeschreibungDescription
/config:<configFile>/config:<configFile> Gibt den Dateinamen für die generierte Konfigurationsdatei an.Specifies the file name for the generated configuration file.

Standard: output.config.Default: output.config
/mergeConfig/mergeConfig Fügt die generierte Konfiguration in eine vorhandene Datei ein, statt die vorhandene Datei zu überschreiben.Merges the generated configuration into an existing file, instead of overwriting the existing file.
/noConfig/noConfig Es werden keine Konfigurationsdateien generiert.Do not generate configuration files.

Siehe auchSee Also

Verwenden von MetadatenUsing Metadata
Übersicht über die MetadatenarchitekturMetadata Architecture Overview