Generieren eines WCF-Clients aus Dienstmetadaten

In diesem Thema wird beschrieben, wie die verschiedenen Schalter in Svcutil.exe verwendet werden, um aus Metadatendokumenten Clients zu generieren.

Die Metadatendokumente können sich in einem permanenten Speicher befinden oder online abgerufen werden.Der Onlineabruf erfolgt gemäß dem WS-MetadataExchange-Protokoll oder Microsoft Discovery (DISCO)-Protokoll.Svcutil.exe gibt zum Abruf von Metadaten die folgenden Metadatenanforderungen gleichzeitig aus.

  • WS-MetadataExchange (MEX)-Anforderung an die angegebene Adresse

  • MEX-Anforderung an die angegebene Adresse mit angefügtem /mex

  • DISCO-Anforderung (mit DiscoveryClientProtocol (möglicherweise nur in englischer Sprache verfügbar) von ASP.NET-Webdiensten) an die angegebene Adresse

Svcutil.exe generiert den Client auf der Basis der vom Dienst empfangenen WSDL (Web Services Description Language)-Datei oder Richtliniendatei.Der Benutzerprinzipalname (UPN) wird durch die Aneinanderreihung von Benutzername, "@" und vollqualifiziertem Domänennamen (FQDN) gebildet.Für in Active Directory registrierte Benutzer ist dieses Format jedoch nicht gültig, und der vom Tool generierte UPN verursacht einen Fehler bei der Kerberos-Authentifizierung mit der Fehlermeldung: Der Anmeldeversuch ist fehlgeschlagen. Um dieses Problem zu beheben, sollten Sie die von diesem Tool generierte Clientdatei manuell berichtigen.

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

Verweisen auf Typen und Freigeben von Typen

Option Beschreibung
\/reference:<file path> Verweist auf Typen in der angegebenen 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.

Kurzform: /r.
\/excludeType:<type> Gibt einen vollqualifizierten oder assemblyqualifizierten Namen an, der aus den verwiesenen Vertragstypen ausgeschlossen werden soll.

Kurzform: /et.

Wählen eines Serialisierungsprogramms

Option Beschreibung
\/serializer:Auto Wählt das Serialisierungsprogramm automatisch aus.Hierbei wird das DataContract-Serialisierungsmodul verwendet.Wenn dieser Versuch fehlschlägt, wird XmlSerializer verwendet.

Kurzform: /ser:Auto.
\/serializer:DataContractSerializer Generiert Datentypen, die das DataContract-Serilisierungsprogramm für die Serialisierung und die Deserialisierung verwenden.

Kurzform: /ser:DataContractSerializer.
\/serializer:XmlSerializer Generiert Datentypen, die XmlSerializer für die Serialisierung und die Deserialisierung verwenden.

Kurzform: /ser:XmlSerializer.
\/importXmlTypes Das DataContract-Serialisierungsprogramm wird so konfiguriert, dass Typen, die keine DataContract-Typen sind, als IXmlSerializable-Typen importiert werden.

Kurzform: /ixt.
\/dataContractOnly Generiert nur Code für DataContract-Typen.ServiceContract-Typen werden generiert.

Sie sollten für diese Option nur lokale Metadatendateien angeben.

Kurzform: /dconly.

Auswählen einer Sprache für den Client

Option Beschreibung
\/language:<language> Gibt die Programmiersprache an, die zur Codegenerierung verwendet werden soll.Sie können entweder einen in der Datei Machine.config registrierten Sprachnamen oder den vollqualifizierten Namen einer Klasse angeben, der von CodeDomProvider abgeleitet ist.

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

Standard: csharp

Kurzform: /l.

Weitere Informationen finden Sie unter CodeDomProvider-Klasse (Seite möglicherweise auf Englisch).

Auswählen eines Namespace für den Client

Option Beschreibung
\/namespace:<string,string> Gibt eine Zuordnung von einem WSDL- oder XML-Schema-targetNamespace zu einem CLR (Common Language Runtime)-Namespace an.Durch die Verwendung eines Platzhalters (*) für targetNamespace werden alle targetNamespaces ohne eine explizite Zuordnung diesem CLR-Namespace zugeordnet.

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.

Standard: Wird vom Zielnamespace des Schemadokuments für DataContracts abgeleitet.Der Standardnamespace wird für alle anderen generierten Typen verwendet.

Kurzform: /n.

Auswählen einer Datenbindung

Option Beschreibung
\/enableDataBinding Implementiert die INotifyPropertyChanged-Schnittstelle für alle generierten DataContract-Typen, um die Datenbindung zu ermöglichen.

Kurzform: /edb.

Generieren der Konfiguration

Option Beschreibung
\/config:<configFile> Gibt den Dateinamen für die generierte Konfigurationsdatei an.

Standard: output.config.
\/mergeConfig Fügt die generierte Konfiguration in eine vorhandene Datei ein, statt die vorhandene Datei zu überschreiben.
\/noConfig Es werden keine Konfigurationsdateien generiert.

Siehe auch

Verwenden von Metadaten
Übersicht über die Metadatenarchitektur