2009-07-17 3 views
3

J'ai un site web qui a un simple service web. Je peux appeler le service web avec succès depuis javascript sur la page. Je dois être en mesure d'appeler le même service Web à partir d'une application de formulaires C#. Le code de service Web est très simple:Je n'arrive pas à appeler mon service Web depuis l'application C# Forms

[WebService(Namespace = "http://myurl.com/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.Web.Script.Services.ScriptService] 
public class IDCService : System.Web.Services.WebService { 

    public IDCService() { 
    } 

    [WebMethod] 
    public string HelloWorld() { 
     return "Hello World"; 
    } 

Mon javascript fonctionne:

 function HelloWorld() { 
      var yourName = $get('txtYourName').value; 
      alert(yourName); 
      IDCService.HelloWorld(HelloWorldCalback, failureCB); 
     } 

     function HelloWorldCalback(result) { 
      alert(result); 
     } 

     function failureCB(result) { 
      alert("Failed"); 
     } 

Cependant, lorsque je tente de définir une référence à la WS dans mon code C# ce que j'attends de voir est un objet avec une méthode "HelloWorld", ce que je vois en fait est un objet avec des propriétés comme "HelloWorldRequest", "HelloWorldResponse", "HelloWorldRequestBody" et ainsi de suite. Je suis nouveau aux services Web, et suis très confus. Toute aide serait appréciée.

Répondre

5

dépend de la façon que vous avez ajouté votre référence :-)

Si vous avez ajouté en cliquant sur « Ajouter une référence Web », vous avez spécifié l'emplacement du service, et vous lui avez donné un espace de noms - supposons qu'il serait appelé "MySVC".

Dans ce cas, vous devriez être en mesure de le faire dans votre programme Winforms:

MySVC.MyTestService svc = new MySVC.MyTestService(); 
string message = svc.HelloWorld(); 

et ainsi récupérer la sortie de la méthode HelloWorld. D'un autre côté, si vous avez cliqué sur "Add Service Reference" (pas le même - ceci ajoutera un proxy côté client WCF à votre service web), alors vous obtiendrez ces requête et réponse classes d'objets. Vous devriez également obtenir une classe de xxxxClient, et que ce que vous allez utiliser:

MyWCFService.MyTestServiceSoapClient client = 
    new MyWCFService.MyTestServiceSoapClient(); 
string message = client.HelloWorld() 

De cette façon, vous devriez être en mesure d'accéder à toutes vos méthodes sur votre service Web, aussi.

Marc

+0

Cela explique beaucoup de choses, mais, pour une raison quelconque mon projet Windows formulaire ne dispose pas d'option d'ajouter une référence Web, il suffit d'ajouter référence et ajouter une référence de service. Ce qui est bizarre, car l'application Web de la même solution dispose d'une référence Web supplémentaire. Des idées sur pourquoi je ne peux pas ajouter une référence Web? –

+0

Bonne explication, @Marc! +1 – Cerebrus

+1

Jessica: si vous utilisez "Ajouter une référence de service", cliquez sur le bouton "Avancé", et sur cet écran, vous devriez utiliser un bouton "Ajouter une référence Web". –

Questions connexes