asynchrone webservice appel. Pas de (...) méthode disponible!
Je sais que cette question a été traitée avant, mais j'ai un service qui retourne une chaîne de caractères comme si.
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class MyService : System.Web.Services.WebService
{
[WebMethod]
public string Hello()
{
System.Threading.Thread.Sleep(10000);
return "Hello User";
}
}
J'ai lu de nombreux exemples, que dis-je besoin d'appeler la méthode comme ceci:
MyService my = new MyService();
AsyncCallback async = new AsyncCallback(callback);
my.BeginHello();
Console.WriteLine("Called webservice");
La chose, c'est quand j'ai ajouté la référence que j'ai coudn't obtenir le BeginHello méthode. J'ai vu de la HelloAsync. Je l'ai donc utilisé comme ça dans mon application console.
MyService my = new MyService();
AsyncCallback async = new AsyncCallback(callback);
my.HelloAsync();
Console.WriteLine("Called webservice");
et défini un rappel privée méthode comme ceci
private void callback(IAsyncResult res)
{
Console.Write("Webservice finished executing.");
}
En agissant de la sorte, j'obtiens une erreur comme ceci:
Une référence d'objet est requise pour la
le non-champ statique, méthode, ou
propriété
'AsyncWebserviceCall.Programme.rappel(le Système.IAsyncResult)
Pourquoi ne pas-je obtenir le BeginHello méthode & Pourquoi dois-je reçois ce message d'erreur comme ci-dessus?
Merci pour votre temps.
OriginalL'auteur user20358 | 2010-10-14
Vous devez vous connecter pour publier un commentaire.
Si le code est exécuté à l'intérieur de votre
public static void Main(string[] args)
de la fonction vous avez besoin de faireprivate void callback(IAsyncResult res)
une méthode statique:C'est pourquoi vous obtenez cette erreur.
De ASP.NET 2.0, il y avait quelques changements à la façon dont vous faites async appels de service web. Faire ceci à la place:
Votre méthode de rappel des changements de signature:
Plus d'infos:
À partir de Visual Studio 2005, à partir du Ajouter une Référence Web générateur de proxy ne crée plus de la
BeginXXX/EndXXX
méthodes. Ces méthodes ont été dépréciée en faveur de laXXXAsync/XXXCompleted
modèle.Si vous avez vraiment besoin de travailler avec le
BeginXXX/EndXXX
style de méthodes asynchrones vous pouvez utiliser l'une des méthodes suivantes:Utiliser le
WSDL.exe
outil pour créer le proxy. Par exemple:wsdl.exe /out:MyService.cs http://somedomain.com/MyService.asmx?wdsl
Inclure l'généré
MyService.cs
fichier dans votre projet et de l'utiliser à la place d'une Référence Web. Vous devez ouvrir une invite de commande Visual Studio pour ce, afin que le .NET Framework SDK fichiers binaires sont dans votre chemin.Apparemment, il y a un hack dans Visual Studio (il peut ne plus être disponible). Pour plus d'informations, voir ce MS Connectez cas:
Mon conseil serait d'embrasser la nouvelle approche.
Merci Kev. donc, vous dites que ASP.NET 2.0 à partir de la ils ont enlevé le {...} préfixe pour les appels asynchrones?
Je ne pense pas que cette ligne de travail: mon.HelloCompleted += Rappel; je vais ajouter un aswer shwoing ce que j'ai fait qui l'ai eu de travail. En attendant, comment ce mec avez les deux méthodes disponibles? codeproject.com/Articles/70441/...
OriginalL'auteur Kev
Voici ce que j'ai changé sur le côté client pour qu'il fonctionne.
new HelloCompletedEventHandler
. Il suffit de ne:my.HelloCompleted += my_HelloCompleted
.Merci Kev. Va essayer ça. 🙂
OriginalL'auteur user20358