Outil ServiceModel Metadata Utility Tool (Svcutil.exe)

L’outil ServiceModel Metadata Utility Tool est utilisé pour générer un code de modèle de service à partir de documents de métadonnées, ainsi que des documents de métadonnées à partir d’un code de modèle de service.

SvcUtil.exe

L’outil ServiceModel Metadata Utility Tool se trouve à l’emplacement d’installation du Kit de développement logiciel Windows, généralement %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Bin.

Fonctionnalités

Le tableau suivant résume les différentes fonctionnalités fournies par cet outil et la rubrique correspondante qui décrit leur utilisation :

Tâche Rubrique
Génère le code à partir des services en cours d'exécution ou de documents de métadonnées statiques. Génération d'un client WCF à partir de métadonnées de service
Exporte des documents de métadonnées à partir de code compilé. Procédure : utiliser Svcutil.exe pour exporter des métadonnées de code de service compilé
Valide le code de service compilé. Procédure : utiliser Svcutil.exe pour valider le code de service compilé
Télécharge des documents de métadonnées à partir de services en cours d'exécution. Procédure : utiliser Svcutil.exe pour télécharger des documents de métadonnées
Génère du code de sérialisation. Procédure : améliorer le délai de démarrage des applications clientes WCF à l’aide de XmlSerializer

Attention

Svcutil remplace les fichiers existants d’un disque si les noms qui ont été fournis en tant que paramètres sont identiques. Cela peut inclure des fichiers de code, des fichiers de configuration ou de métadonnées. Pour éviter cela, lorsque vous générez du code et des fichiers de configuration, utilisez le commutateur /mergeConfig.

De plus, les commutateurs /r et /ct utilisés pour référencer des types sont destinés à la génération de contrats de données. Ces commutateurs ne fonctionnent pas lors de l'utilisation de XmlSerializer.

Délai d'expiration

Cet outil est soumis à un délai d’attente de 5 minutes lors de la récupération de métadonnées. Ce délai d'attente s'applique uniquement à la récupération des métadonnées sur le réseau. Il ne s'applique pas au traitement de ces métadonnées.

Multi-ciblage

L'outil ne prend pas en charge le multi-ciblage. Si vous souhaitez générer un artefact .NET Framework 4 à partir de svcutil.exe, utilisez le fichier svcutil.exe du Kit de développement logiciel (SDK) de .NET Framework 4. Pour générer un artefact .NET Framework 3.5, utilisez le fichier exécutable du Kit de développement logiciel (SDK) de .NET Framework 3.5.

Accès aux documents WSDL

Lorsque vous utilisez Svcutil pour accéder à un document WSDL qui contient une référence à un service d'émission de jeton de sécurité (STS), Svcutil effectue un appel WS-MetadataExchange call au STS. Cependant, le service peut exposer ses documents WSDL à l'aide de WS-MetadataExchange ou de HTTP GET. Par conséquent, si le STS n’a exposé que le document WSDL à l’aide de HTTP GET, un client écrit dans WinFX échoue. Pour les clients écrits dans .NET Framework 3.5, Svcutil tente d’utiliser WS-MetadataExchange et HTTP GET pour obtenir le STS WSDL.

Utilisation de Svcutil.exe

Utilisations courantes

Le tableau suivant illustre certaines des options fréquemment utilisées pour cet outil :

Option Description
/directory:<directory> Répertoire à utiliser pour la création des fichiers.

Valeur par défaut : le répertoire actif.

Forme abrégée : /d
/help Affiche la syntaxe de commande et les options de l'outil.

Forme abrégée : /?
/noLogo Supprime le message de copyright et de bannière.
/svcutilConfig:<configFile> Spécifie un fichier de configuration personnalisé à utiliser en remplacement du fichier App.config. Peut être utilisé pour enregistrer des extensions system.serviceModel sans modifier le fichier de configuration de l’outil.
/target:<type de sortie> Spécifie la sortie à générer par l'outil.

Les valeurs valides sont code, métadonnées ou xmlSerializer.

Forme abrégée : /t

Génération de code

Svcutil.exe peut générer du code pour les contrats de service, les clients et les types de données à partir de documents de métadonnées. Ces documents de métadonnées peuvent se trouver sur un stockage durable, ou encore être récupérés en ligne. La récupération en ligne suit le protocole WS-Metadata Exchange ou le protocole DISCO (pour plus d'informations, consultez la section consacrée au téléchargement de métadonnées).

Utilisez l’outil SvcUtil.exe pour générer des contrats de service et de données basés sur un document WSDL prédéfini. Utilisez le commutateur /serviceContract et spécifiez une URL ou un emplacement de fichier dans lequel le document WSDL peut être téléchargé ou disponible. Cela génère le service et les contrats de données définis dans le document WSDL, qui peuvent ensuite être utilisés pour implémenter un service conforme. Pour plus d’informations, consultez Comment : récupérer des métadonnées et implémenter un service conforme.

Pour un service avec un point de terminaison BasicHttpContextBinding, Svcutil.exe génère un BasicHttpBinding avec l’attribut allowCookies affecté à la place de la valeur true. Les cookies sont utilisés pour le contexte sur le serveur. Pour gérer le contexte sur le client lorsque le service utiliser des cookies, vous pouvez modifier manuellement la configuration pour utiliser une liaison de contexte.

Attention

Svcutil.exe génère le client sur la base du WSDL ou du fichier de stratégie reçu du service. Le nom d'utilisateur principal (UPN) est généré en concaténant le nom d'utilisateur, « @ » et un nom de domaine complet. Toutefois, ce format n'est pas valide pour les utilisateurs Active Directory, et l'UPN généré par l'outil provoque une défaillance dans l'authentification Kerberos et l'affichage du message d'erreur suivant : La tentative d'ouverture de session a échoué. Pour remédier à cela, vous devez corriger manuellement le fichier client généré par cet outil.

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

Argument Description
epr Chemin d'accès à un fichier XML qui contient une référence de point de terminaison WS-Addressing pour un service qui prend en charge WS-Metadata Exchange. Pour plus d'informations, consultez la section consacrée au téléchargement de métadonnées.
metadataDocumentPath Chemin d’accès à un document de métadonnées (wsdl ou xsd) qui contient le contrat à importer dans le code (.wsdl, .xsd, .wspolicy ou .wsmex).

Svcutil effectue des imports et des opérations d'inclusion lorsque vous spécifiez une URL distante pour les métadonnées. Toutefois, si vous souhaitez traiter des fichiers de métadonnées sur le système de fichiers local, vous devez spécifier tous les fichiers dans cet argument. De cette façon, vous pouvez utiliser Svcutil dans un environnement de génération dans lequel vous ne pouvez pas avoir de dépendances de réseau. Vous pouvez utiliser des caractères génériques (par exemple, *.xsd, *.wsdl) pour cet argument.
url URL d'accès à un point de terminaison de service qui fournit les métadonnées ou à un document de métadonnées hébergé en ligne. Pour plus d'informations sur la façon dont ces documents sont récupérés, consultez la section consacrée au téléchargement de métadonnées.
Option Description
/async Génère à la fois des signatures de méthode synchrones et asynchrones.

Valeur par défaut : génération de signatures de méthode synchrones uniquement.

Forme abrégée : /a
/collectionType :<type> Spécifie le type de collection de listes pour un client WCF.

Valeur par défaut : le type de collection est System.Array.

Forme abrégée : /ct
/config:<configFile> Spécifie le nom de fichier du fichier de configuration généré.

Valeur par défaut : output.config.
/dataContractOnly Génère du code pour les types de contrat de données uniquement. Aucun type de contrat de service n'est généré.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.

Forme abrégée : /dconly
/enableDataBinding Implémente l'interface INotifyPropertyChanged sur tous les types de contrat de données pour activer la liaison de données.

Forme abrégée : /edb
/excludeType :<type> Spécifie un nom de type qualifié complet ou qualifié d'assembly à exclure des types de contrat référencés.

Lors de l'utilisation de ce commutateur avec /r à partir de DLL séparées, le nom complet de la classe XSD est référencé.

Forme abrégée : /et
/importXmlTypes Configure le sérialiseur de contrat de données de façon à importer des types autres que le type de contrat de données en tant que types IXmlSerializable.
/internal Génère des classes marquées comme internes. Valeur par défaut : génération de classes publiques uniquement.

Forme abrégée : /i
/language:<language> Spécifie le langage de programmation à utiliser pour la génération de code. Vous devez spécifier un nom de langage enregistré dans le fichier Machine.config, ou le nom qualifié complet d’une classe qui hérite de CodeDomProvider.

Valeurs: c#, cs, csharp, vb, visualbasic, c++, cpp

Valeur par défaut : csharp

Forme abrégée : /l
/mergeConfig Fusionne la configuration générée dans un fichier existant au lieu de remplacer le fichier existant.
/messageContract Génère des types de contrat de message.

Forme abrégée : /mc
/namespace:<string,string> Spécifie un mappage d'un espace de noms WSDL ou XML Schema targetNamespace vers un espace de noms CLR. L'utilisation de '*' pour l'espace de noms targetNamespace mappe tous les espaces de noms targetNamespaces sans mappage explicite à cet espace de noms CLR.

Pour vérifier que le nom de contrat du message n'entre pas en collision avec le nom d'opération, vous devez soit qualifier la référence de type avec ::, soit vous assurer que les noms sont uniques.

Valeur par défaut : dérivée de l'espace de noms cible du document de schéma pour les contrats de données. L'espace de noms par défaut est utilisé pour tous les autres types générés.

Forme abrégée : /nRemarque : lors de la génération de types à utiliser avec XmlSerializer, seul un seul mappage d’espace de noms est pris en charge. Tous les types générés se trouveront dans l’espace de noms par défaut ou l’espace de noms spécifié par '*'.
/noConfig Ne génère pas de fichiers de configuration.
/noStdLib Ne référence pas les bibliothèques standard.

Valeur par défaut: Mscorlib.dll et System.servicemodel.dll sont référencés.
/out:<file> Spécifie le nom de fichier du code généré.

Valeur par défaut: dérivée du nom de définition WSDL, du nom de service WSDL ou de l'espace de noms cible de l'un des schémas.

Forme abrégée : /o
/reference:<file path> Référence les types contenus dans l'assembly spécifié. Lorsque vous générez des clients, utilisez cette option pour spécifier des assemblys qui peuvent contenir des types représentant les métadonnées importées.

Vous ne pouvez pas spécifier de contrats de message et de types XmlSerializer à l'aide de ce commutateur.

Si DateTimeOffset est référencé, ce type est utilisé au lieu de générer un nouveau type. Si l’application est écrite à l’aide de .NET Framework 3.5, SvcUtil.exe référence automatiquement DateTimeOffset.

Forme abrégée : /r
/serializable Génère des classes marquées avec l'attribut Serializable.

Forme abrégée : /s
/serviceContract Générez le code pour les contrats de service uniquement. La classe de client et la configuration ne sont pas générées

Forme abrégée : /sc
/serializer:Auto Sélectionne automatiquement le sérialiseur. Celui-ci tente d’utiliser le sérialiseur de contrat de données et utilise le xmlSerializer en cas d’échec.

Forme abrégée : /ser
/serializer:DataContractSerializer Génère des types de données qui utilisent le sérialiseur de contrat de données pour la sérialisation et la désérialisation.

Forme abrégée : /ser:DataContractSerializer
/serializer:XmlSerializer Génère des types de données qui utilisent le XmlSerializer pour la sérialisation et la désérialisation.

Forme abrégée : /ser:XmlSerializer
/targetClientVersion Spécifie la version de .NET Framework ciblée par l’application. Les valeurs valides sont Version30 et Version35. La valeur par défaut est Version30.

Forme abrégée : /tcv

Version30 : utilisez /tcv:Version30 si vous générez du code pour les clients qui utilisent WinFX.

Version35 : utilisez /tcv:Version35 si vous générez du code pour les clients qui utilisent .NET Framework 3.5. Si vous utilisez /tcv:Version35 avec le commutateur /async, des méthodes asynchrones basées sur des délégués de rappel et sur des événements sont générées. De plus, la prise en charge des DataSets activés par LINQ et DateTimeOffset est activée.
/wrapped Contrôle l'usage de la casse appropriée pour les documents de type littéral par le biais des paramètres d'encapsulage. Utilisez le commutateur /wrapped avec l’outil ServiceModel Metadata Utility Tool (Svcutil.exe) pour spécifier la casse normale.

Notes

Lorsque la liaison de service est l’une des liaisons fournies par le système (consultez System-Provided Bindings), et la propriété ProtectionLevel a la valeur None ou Sign, Svcutil génère un fichier de configuration à l’aide de l’élément <customBinding> au lieu de l’élément fourni par le système attendu. Par exemple, si le service utilise l'élément <wsHttpBinding> avec le ProtectionLevel défini à Sign, la configuration générée a <customBinding> dans la section bindings au lieu de <wsHttpBinding>. Pour plus d’informations sur le niveau de la protection, consultez Présentation du niveau de protection.

Exportation de métadonnées

Svcutil.exe peut exporter des métadonnées pour des services, des contrats et des types de données contenus dans des assemblys compilés. Pour exporter des métadonnées pour un service, vous devez utiliser l'option /serviceName afin de spécifier le service à exporter. Pour exporter tous les types de contrat de données dans un assembly, vous devez utiliser l'option /dataContractOnly. Par défaut, les métadonnées sont exportées pour tous les contrats de service dans les assemblys d'entrée.

svcutil.exe [/t:metadata] [/serviceName:<serviceConfigName>] [/dataContractOnly] <assemblyPath>*

Argument Description
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des services, des contrats ou des types de contrat de données à exporter. Des caractères génériques de ligne de la commande standard peuvent être utilisés pour fournir plusieurs fichiers en tant qu'entrée.
Option Description
/serviceName:<serviceConfigName> Spécifie le nom de configuration d'un service à exporter. Si cette option est utilisée, un assembly exécutable avec un fichier de configuration associé doit être passé en tant qu'entrée. Svcutil.exe recherche tous les fichiers de configuration associés la configuration du service. Si les fichiers de configuration contiennent des types d’extension, les assemblys qui contiennent ces types doivent être dans le GAC ou être explicitement fournis à l’aide de l’option /reference.
/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type. Si vous exportez ou validez un service qui utilise des extensions tierces (Comportements, Liaisons et BindingElements) enregistrées dans la configuration, utilisez cette option pour localiser des assemblys d’extension qui ne figurent pas dans le GAC.

Forme abrégée : /r
/dataContractOnly Fonctionne uniquement sur les types de contrat de données. Les contrats de service ne sont pas traités.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.

Forme abrégée : /dconly
/excludeType :<type> Spécifie le nom qualifié complet ou qualifié d'assembly d'un type à exclure de l'exportation. Cette option peut être utilisée lors de l'exportation des métadonnées d'un service (ou d'un ensemble de contrats de services) afin d'exclure certains types de l'opération d'exportation. Cette option ne peut pas être utilisée avec l'option /dconly.

Lorsqu'un assembly contient plusieurs services et que chacun d'entre eux utilise des classes séparées tout en portant le même nom XSD, vous devez spécifier le nom du service au lieu du nom de la classe XSD pour ce commutateur.

Les types XSD ou les types de contrat de données ne sont pas pris en charge.

Forme abrégée : /et

Validation de service

La validation peut être utilisée pour détecter des erreurs dans les implémentations de service sans héberger le service. Vous devez utiliser l'option /serviceName pour indiquer le service à valider.

svcutil.exe /validate /serviceName:<serviceConfigName> <assemblyPath>*

Argument Description
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des types de service à valider. L'assembly doit posséder un fichier de configuration associé pour pouvoir fournir la configuration du service. Vous pouvez utiliser des caractères génériques de ligne de commande standard pour fournir plusieurs assemblys.
Option Description
/validate Valide une implémentation de service spécifiée par l'option /serviceName. Si cette option est utilisée, un assembly exécutable avec un fichier de configuration associé doit être passé en tant qu'entrée.

Forme abrégée : /v
/serviceName:<serviceConfigName> Spécifie le nom de configuration d'un service à valider. Svcutil.exe recherche tous les fichiers de configuration associés de tous les assemblys d'entrée pour la configuration du service. Si les fichiers de configuration contiennent des types d'extension, les assemblys qui contiennent ces types doivent être dans le GAC ou être explicitement fournis à l'aide de l'option /reference.
/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type. Si vous exportez ou validez un service qui utilise des extensions tierces (Comportements, Liaisons et BindingElements) enregistrées dans la configuration, utilisez cette option pour localiser des assemblys d’extension qui ne figurent pas dans le GAC.

Forme abrégée : /r
/dataContractOnly Fonctionne uniquement sur les types de contrat de données. Les contrats de service ne sont pas traités.

Pour cette option, vous devez spécifier uniquement des fichiers de métadonnées locaux.

Forme abrégée : /dconly
/excludeType :<type> Spécifie le nom qualifié complet ou qualifié d’assembly d’un type à exclure de la validation.

Forme abrégée : /et

Téléchargement de métadonnées

Svcutil.exe permet de télécharger des métadonnées à partir de services en cours d'exécution et de les enregistrer dans des fichiers locaux. Pour pouvoir télécharger des métadonnées, vous devez spécifier l'option /t:metadata. Sinon, un code client est généré. Pour les schémas d'URL HTTP et HTTPS, Svcutil.exe essaie de récupérer les métadonnées à l'aide de WS-Metadata Exchange et DISCO. Pour tous les autres schémas d'URL, Svcutil.exe utilise uniquement WS-MetadataExchange.

Svcutil publie les requêtes de métadonnées suivantes tout en effectuant simultanément une récupération de métadonnées.

  • Requête MEX (WS-Transfer) à l'adresse fournie

  • Requête MEX à l'adresse fournie avec /mex ajouté

  • Requête DISCO (à l'aide du DiscoveryClientProtocol d'ASMX) à l'adresse fournie.

Par défaut, Svcutil.exe utilise les liaisons définies dans la classe MetadataExchangeBindings pour effectuer des requêtes MEX. Pour configurer la liaison utilisée pour WS-Metadata Exchange, vous devez définir un point de terminaison client dans la configuration qui utilise le contrat IMetadataExchange. Cela peut être défini soit dans le fichier de configuration de Svcutil.exe, soit dans un autre fichier de configuration spécifié à l'aide de l'option /svcutilConfig.

svcutil.exe /t:metadata <url>* | <epr>

Argument Description
url URL d'accès à un point de terminaison de service qui fournit les métadonnées ou à un document de métadonnées hébergé en ligne.
epr Chemin d'accès à un fichier XML qui contient une référence de point de terminaison WS-Addressing pour un service qui prend en charge WS-Metadata Exchange.

Génération de type XmlSerializer

Les applications clientes et de services qui utilisent des types de données sérialisables à l'aide de XmlSerializer génèrent et compilent le code de sérialisation de ces types de données lors de l'exécution, ce qui peut provoquer des performances de démarrage lentes.

Notes

Le code de sérialisation prégénéré est réservé aux applications clientes, pas aux services.

Svcutil.exe peut améliorer les performances de démarrage de ces applications en générant le code de sérialisation C# nécessaire à partir des assemblys compilés pour l'application. Pour plus d’informations, consultez Procédure : améliorer le temps de démarrage des applications clientes WCF à l’aide de XmlSerializer.

Notes

Svcutil.exe génère uniquement le code des types utilisés par les contrats de service figurant dans les assemblys d'entrée.

svcutil.exe /t:xmlSerializer <assemblyPath>*

Argument Description
assemblyPath Spécifie le chemin d’accès à un assembly qui contient des types de contrat de service. Des types de sérialisation sont générés pour tous les types Xml sérialisables de chaque contrat.
Option Description
/reference:<file path> Ajoute l'assembly spécifié au jeu d'assemblys utilisé pour résoudre des références de type.

Forme abrégée : /r
/excludeType :<type> Spécifie le nom qualifié complet ou qualifié d’assembly d’un type à exclure de l’exportation ou de la validation.

Forme abrégée : /et
/out:<file> Spécifie le nom de fichier du code généré. Cette option est ignorée lorsque plusieurs assemblys sont passés à l'outil en tant qu'entrée.

Valeur par défaut : dérivée du nom de l'assembly.

Forme abrégée : /o
/UseSerializerForFaults Spécifie que XmlSerializer doit être utilisé pour lire et écrire les erreurs, au lieu du DataContractSerializer par défaut.

Exemples

La commande suivante génère un code client à partir d'un service en cours d'exécution ou de documents de métadonnées en ligne.

svcutil http://service/metadataEndpoint

La commande suivante génère un code client à partir de documents de métadonnées locaux.

svcutil *.wsdl *.xsd /language:C#

La commande suivante génère des types de contrat de données en Visual Basic à partir de documents de schémas locaux.

svcutil /dconly *.xsd /language:VB

La commande suivante télécharge des documents de métadonnées à partir de services en cours d'exécution.

svcutil /t:metadata http://service/metadataEndpoint

La commande suivante génère des documents de métadonnées pour les contrats de service et les types associés d'un assembly.

svcutil myAssembly.dll

La commande suivante génère des documents de métadonnées pour un service, ainsi que tous les contrats de service et types de données associés au sein d'un assembly.

svcutil myServiceHost.exe /serviceName:myServiceName

La commande suivante génère des documents de métadonnées pour les types de données présents dans un assembly.

svcutil myServiceHost.exe /dconly

La commande suivante vérifie l'hébergement de services.

svcutil /validate /serviceName:myServiceName myServiceHost.exe

La commande suivante génère des types de sérialisation pour les types XmlSerializer utilisés par les contrats de service de l'assembly.

svcutil /t:xmlserializer myContractLibrary.exe

Quota maximal pour le nombre de caractères nametable

Lors de l'utilisation de svcutil pour générer des métadonnées pour un service, vous pouvez recevoir le message suivant :

Erreur : Impossible de récupérer les métadonnées de http://localhost:8000/somesservice/mex. Dépassement du quota maximal pour le nombre de caractères nametable (16384) lors de la lecture de données XML. La structure de données nametable est utilisée pour stocker les chaînes rencontrées lors du traitement XML ; des documents XML longs comportant des noms d'éléments non répétés, des noms d'attributs et des valeurs d'attributs peuvent déclencher ce quota. Ce quota peut être augmenté en modifiant la propriété MaxNameTableCharCount sur l’objet XmlDictionaryReaderQuotas utilisé pendant la création du lecteur XML.

Cette erreur peut être causée par un service qui retourne un fichier WSDL volumineux lorsque vous demandez ses métadonnées. Le problème est lié à un dépassement du quota de caractères pour l'outil svcutil.exe. Cette valeur est définie pour empêcher les attaques par déni de service (DOS). Vous pouvez augmenter ce quota en spécifiant le fichier de configuration suivant pour svcutil.

Le fichier de configuration suivant montre comment définir les quotas du lecteur pour svcutil.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <system.serviceModel>
        <bindings>
            <customBinding>
                <binding name="MyBinding">
                    <textMessageEncoding>
                        <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                    </textMessageEncoding>
                    <httpTransport maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" />
                </binding>
            </customBinding>
        </bindings>
        <client>
            <endpoint binding="customBinding" bindingConfiguration="MyBinding"
                contract="IMetadataExchange"
                name="http" />
        </client>
    </system.serviceModel>
</configuration>

Créez un fichier appelé svcutil.exe.config et copiez l'exemple de code XML dans ce fichier. Puis, placez le fichier dans le même répertoire que svcutil.exe. Lors de la prochaine exécution de svcutil.exe, les nouveaux paramètres seront pris en compte.

Problèmes de sécurité

Vous devez utiliser la liste de contrôle d'accès appropriée pour protéger le dossier d'installation de Svcutil.exe, Svcutil.config, ainsi que les fichiers vers lesquels pointe /svcutilConfig. Cela peut éviter l'enregistrement et l'exécution d'extensions malveillantes.

De plus, minimiser le risque que la sécurité soit compromise, vous ne devez pas ajouter d’extensions non fiables au système, ni avoir recours à des fournisseurs de code non fiables avec Svcutil.exe.

Enfin, vous ne devez pas utiliser l'outil dans la couche intermédiaire de votre application, car cela pourrait provoquer un déni de service pour le processus en cours.

Voir aussi