comment générer un service web à partir de wsdl

Client m'a fourni le wsdl pour générer le service web.Mais quand j'ai utilisé le wsdl.la commande exe a généré le .cs de la classe. J'ai utilisé cette classe dans mon service web et quand j'ai fourni la wsdl au client, elle ne correspondait pas à leur schéma. En fait, je veux la .asmx doit être généré automatiquement à partir de la wsdl pour que je puisse remplir la méthode web. Pour que ça corresponde exactement à leur schéma. Espérons que cela a du sens.

39
demandé sur Neeraj Kumar 2009-09-08 20:27:26

5 réponses

Il n'y a pas de solution miracle pour ce que vous cherchez, malheureusement. Voici ce que vous pouvez faire:

  • créer une classe D'Interface en utilisant cette commande dans la fenêtre D'invite de commande Visual Studio:

    wsdl.exe yourFile.wsdl /l:CS /serverInterface

    Utilisez VB ou CS pour la langue de votre choix. Cela va créer un nouveau .cs ou .vb fichier.

  • créer un nouveau projet de service Web.net. Importer le Fichier dans votre projet - le fichier a été créé dans l'étape ci-dessus.

  • Dans votre .asmx.cs le fichier dans le Code-Afficher, modifier votre classe en tant que telle:

 public class MyWebService : System.Web.Services.WebService, IMyWsdlInterface
 {    
     [WebMethod]
     public string GetSomeString()
     {
         //you'll have to write your own business logic 
         return "Hello SOAP World";
     }
 }
63
répondu p.campbell 2009-09-10 17:04:31

Que Diriez-vous d'utiliser le wsdl /server ou wsdl /serverinterface interrupteurs? Pour autant que je comprenne le wsdl.propriétés de la ligne de commande exe, c'est ce que vous recherchez.

- ADVANCED -

/serveur

Server switch has been deprecated. Please use /serverInterface instead.
Generate an abstract class for an xml web service implementation using
ASP.NET based on the contracts. The default is to generate client proxy
classes.

d'un autre côté: pourquoi voulez-vous créer des solutions technologiques obsolètes? Pourquoi ne pas créer ce service web en tant que service WCF. C'est la façon actuelle et plus moderne, beaucoup plus flexible de faire ce!

Marc


mise à jour:

quand j'utilise wsdl /server sur un fichier WSDL, je reçois ce fichier créé:

[WebService(Namespace="http://.......")]
public abstract partial class OneCrmServiceType : System.Web.Services.WebService 
{
    /// <remarks/>
    [WebMethod]
    public abstract void OrderCreated(......);
}

c'est à peu près exactement le même code qui est généré lorsque vous ajoutez un fichier ASMX à votre solution (dans le code derrière le fichier - "yourservice.asmx.cs"). Je ne pense pas que vous puissiez vous rapprocher de la création d'un fichier ASMX à partir d'un fichier WSDL.

vous pouvez toujours ajouter le "votre service.asmx" manuel-il ne contient pas vraiment beaucoup:

<%@ WebService Language="C#" CodeBehind="YourService.asmx.cs" 
      Class="YourServiceNamespace.YourServiceClass" %>
4
répondu marc_s 2009-09-08 18:53:02

vous ne pouvez pas garantir que la WSDL générée automatiquement corresponde à la WSDL à partir de laquelle vous créez l'interface de service.

dans votre scénario, vous devriez placer le fichier WSDL sur votre site Web quelque part, et demander aux consommateurs d'utiliser cette URL. Vous devriez désactiver le Documentation protocole sur le web.config de sorte que "?wsdl" ne renvoie pas un WSDL. Voir <protocols> Element.

ce sujet est spécifique à une technologie ancienne. Les clients des services web XML et des services web XML devraient maintenant être créés en utilisant Windows Communication Foundation (WCF).

3
répondu John Saunders 2009-09-10 16:54:16

vous pouvez générer les classes WS proxy en utilisant L'outil WSCF (Web Services Contract First) à partir de thinktecture.com. Donc essentiellement, vous pouvez créer webservices à partir de wsdl. Créer les asmx, peut-être pas, mais c'est le plus facile, non? Cet outil s'intègre brillamment dans VS2005-8 (nouvelle version pour 2010/WCF appelée wscf-bleu). Je l'ai utilisé charges et toujours trouvé ça vraiment bon.

1
répondu Neilb 2010-05-20 15:50:58

il se peut que la réponse soit très tardive. Mais pourrait être utile aux nécessiteux: comment convertir WSDL en SVC:

  1. en Supposant que vous rencontrez .fichier wsdl à l'emplacement "E:\" pour en faciliter l'accès.
  2. préparez la commande pour chacun .fichier wsdl: E:\YourServiceFileName.wsdl
  3. Permissions: supposons que vous avez les droits administratifs pour effectuer les permissions. Open directory : C:\Program fichiers (x86)\Microsoft Visual Studio 12.0\VC\bin
  4. clic Droit sur amd64 => Sécurité => Modifier => Ajouter un Utilisateur => tout le monde Ou Utilisateur Actuel => Permettre à tous les permissions => OK.
  5. Préparer les Commandes pour chaque fichier dans l'éditeur de texte comme: wsdl.exe E:\YourServiceFileName.wsdl /l: CS / server.
  6. maintenant, ouvrez l'invite de commande Visual studio à partir de : C:\Program fichiers (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts\VS2013 x64 commande Native Tools invite.
  7. Exécuter ci-dessus commande.
  8. aller à l'annuaire : C:\Program fichiers (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64, le cas échéant .Le fichier CS doit être généré.

    9.Déplacer le fichier CS généré à l'endroit approprié.

1
répondu Red Swan 2016-01-15 09:54:47