2009-10-21 6 views
0

Scénario:Utilisation des classes de Webservice dans Silverlight lors de l'ajout référence de service au lieu de référence web

J'utilise Silverlight 3.0 en tant que client pour un service Web.

Conception:

Le serveur a une classe nommée DeviceInfoService qui a la fonctionnalité de base d'obtenir la liste des périphériques, obtenir les propriétés des périphériques, etc.

Quand j'ouvre un ASP. Projet NET et essayer d'ajouter une référence Web, je peux trouver une option pour ajouter une "référence Web". Après avoir ajouté la référence Web de cette façon, je peux accéder à la classe DeviceInfoService en créant son objet et en accédant à ses méthodes.

Web Référence v/service Référence:

à Silverlight Venir: lorsque je tente d'ajouter une référence de service, il n'y a pas possibilité d'ajouter une référence Web. En allant avec Service Reference, tout fonctionne correctement jusqu'à ce que le fichier WSDL soit téléchargé. Les gens disent que je peux obtenir cette option en remontant à .NET 2.0, mais probablement Silverlight ne fonctionne pas dans .NET 2.0

Le problème

Maintenant, quand je tente d'accéder à la DeviceInfoService de classe, je Je ne suis pas capable de le trouver. Tout ce que je reçois est Interfaces - DeviceInfoServiceSoap et DeviceInfoServiceSoapChannel. Classes nommées DeviceInfoServiceSoapClient.

Les méthodes GetHostedDevices et GetDeviceInfo ne sont plus disponibles. Tout ce que je reçois est GetDeviceInfoRequest, GetDeviceInfoRequestBody, GetDeviceInfoResponse et GetDeviceInfoResponseBody.

J'ai beaucoup cherché comment utiliser ces quatre classes, pour ne rien trouver. Je veux obtenir ces 2 classes directement comme dans ASP.NET et ne pas utiliser ce type de réponse à la demande.

Répondre

1

Quelle est la référence Web dans ASP.NET est équivalente à la référence de service dans Silverlight.

Voici un exemple d'utilisation d'un service Web dans Silverlight, par exemple. le CDYNE Profanity Filter.

Ajoutez une nouvelle référence de service à votre projet, l'URL est: http://ws.cdyne.com/ProfanityWS/Profanity.asmx?wsdl, laissez le nom ServiceReference1.

Utilisez ce code-behind pour appeler le service (qui a été mis en œuvre pour être asynchrone):

public MainPage() 
{ 
    InitializeComponent(); 

    string badText = "I wonder if the filter will filter this out: shit bad luck"; 
    ServiceReference1.ProfanitySoapClient client = new ServiceReference1.ProfanitySoapClient(); 
    client.ProfanityFilterCompleted += new EventHandler<ServiceReference1.ProfanityFilterCompletedEventArgs>(client_ProfanityFilterCompleted); 
    client.ProfanityFilterAsync(badText, 0, false);    
} 

void client_ProfanityFilterCompleted(object sender, ServiceReference1.ProfanityFilterCompletedEventArgs e) 
{ 
    string cleanText = e.Result.CleanText; // Web service callback is here 
} 

Et vous avez un service web opérationnel en Silverlight!

+0

Merci pour la réponse. Je vais sûrement essayer quand je suis au travail et revenir. Cela ressemble à la réponse probable. J'essayais aussi de faire quelque chose pareil, mais je n'ai pratiquement pas trouvé de tutoriel sur internet même après avoir fait des recherches sur Google. –

+0

Merci Gergely, ça m'a aidé. –

+0

Gergely J'ai fait quelques changements dans le projet et le projet est à mi-chemin. Soudain, je trouve que le constructeur prend énormément de temps à finir. En fait, il n'a jamais fini. Quel peut être le problème. –

2

Vous semblez terriblement confus au sujet de certains concepts.

Que diriez-vous de regarder la vidéo Silverlight.Net suivante et voir si cela aide? How to Consume WCF and ASP.NET Web Services in Silverlight

+0

J'ai démarré Silverlight, je dois consommer un service web. La façon dont je faisais traditionnellement dans ASP.NET n'est pas la même que dans Silverlight. C'était la raison de la confusion.Je n'ai pas pu trouver "Web Reference" lors de l'utilisation Silverlight –

Questions connexes