2009-06-15 8 views
0

Je fais mes premiers pas dans la consommation de services Web. Voici ma situation:Consommer un fichier WSDL en utilisant .NET - Total Newbie Question!

J'écris dans .NET 3.5 pour un site intranet d'entreprise existant. Je dois ajouter un appel à un service Web, passer des données de compte et obtenir une réponse.

Je suis en mesure d'ajouter une référence Web au fichier .wsdl et Visual Studio génère la classe Service Reference. Donc, voici ma question - est-il plus facile d'utiliser WCF dans cette situation, ou devrais-je utiliser l'architecture de services Web ASP.NET cuite?

J'ai essayé de faire fonctionner les services Web en utilisant le code suivant, mais j'ai échoué. Dans ce code, le ProgramServiceClient est le nom de la classe de service générée pour moi par VS en utilisant le fichier wsdl. Encore une fois, je suis très nouveau à ce sujet, donc les pointeurs seraient très utiles!

var client = new ProgramServiceClient(); 
    Int64 acct = 123456781234 
    var requestMetadata = new RequestMetadata(); 

    var response = new GetProgramResponse(); 
    var request = new GetProgramRequest 
         { 
          AccountId = acct 
         }; 

    client.GetProgram(requestMetadata, request, out response); 
+0

Etes-vous sûr de vouloir utiliser le paramètre out? On dirait que la méthode devrait retourner une réponse au lieu de manipuler le paramètre – slf

+0

Est-ce que ProgramServiceClient est généré par les bits WCF? Avez-vous une exception levée, si oui pouvez-vous coller dans la question? Quelle est la signature de la méthode pour ProgramServiceClient.GetProgram()? – Kev

+0

@Kev - Le client a été généré par la boîte de dialogue Ajouter une référence de service. Je vais essayer d'utiliser le lien fourni dans la réponse ci-dessous. En cas d'échec, je posterai des messages d'erreur spécifiques. @slf - le paramètre out a été requis par la méthode qui a été générée. –

Répondre

5

Voir How to Consume a Web Service.

Vous devez utiliser WCF pour tous les nouveaux développements de services Web avec .NET. WCF est "cuit dans" à .NET. Ce que vous appelez "l'architecture de services Web ASP.NET" est l'ancienne, ancienne et stagnante architecture de services Web. En ce qui concerne le code spécifique que vous avez posté, il est bon que vous écriviez un code spécifique, mais vous devez également publier les messages d'erreur spécifiques ou les exceptions que vous recevez. En particulier, si vous obtenez une exception, publiez l'exception complète, y compris les traces de pile et les instances InnerException. Attrape, puis affiche, ex.ToString().

+2

+1 absolument: WCF offre juste tellement plus de flexibilité et de puissance et d'options - quiconque commence NOUVEAU aujourd'hui ne devrait même pas avoir à penser WCF vs ASMX - le choix est totalement clair! –

+0

John, merci pour la réponse concise et informative. J'ai tout mis en marche, et maintenant je fais face à des erreurs lancées par le service actuel, qui est tout simplement obtenir la mise en forme de la demande correctement. Vous m'avez mis en marche, cependant. Merci! –

Questions connexes