Comment appeler une Méthode de Service Web?
J'ai un service web qui contient cette méthode:
[WebMethod]
public static List<string> GetFileListOnWebServer()
{
DirectoryInfo dInfo = new DirectoryInfo(HostingEnvironment.MapPath("~/UploadedFiles/"));
FileInfo[] fInfo = dInfo.GetFiles("*.*", SearchOption.TopDirectoryOnly);
List<string> listFilenames = new List<string>(fInfo.Length);
for(int i = 0; i < fInfo.Length; i++)
{
listFilenames.Add(fInfo[i].Name);
}
return listFilenames;
}
Cela renvoie une liste de noms de fichiers dans un dossier. Quand je debug de l'application, il fonctionne très bien.
Ce que je veux faire, c'est d'appeler ce webservice méthode à partir d'une application winform. J'ai ajouté une référence à l' .dll du webservice, et c'est comme ça que j'appelle la méthode ci-dessus:
private void Form1_Load(object sender, EventArgs e)
{
List<string> files = TestUploaderWebService.Service1.GetFileListOnWebServer();
}
Le code ci-dessus ne fonctionne pas - quand il entre dans la méthode, le chemin d'accès de l'application web est null, et beaucoup de propriétés de HostingEnvironment classe sont également nulles. Où est mon erreur, en essayant d'appeler une méthode de service web à partir d'une autre application winform?
Veuillez noter que le service web est effectué dans Visual Web Developer Express, et la winform dans Visual C# express; c'est pourquoi j'ai dû ajouter le service web dll en tant que référence dans l'application winform. Je n'ai pas de Visual Studio plein, ce qui m'aurait permis une solution unique avec deux projets.
Je suis nouveau à des services web.
PS - j'aime la mise en forme de texte à la volée ici 🙂
Vous devez vous connecter pour publier un commentaire.
Dans visual studio, utiliser la fonction "Ajouter une Référence Web" fonctionnalité, puis saisissez l'URL de votre service web.
Par l'ajout d'une référence à la DLL, vous ne référence pas en tant que service web, mais simplement comme un ensemble.
Lorsque vous ajoutez une référence web à créer une classe de proxy dans votre projet qui a le même ou les mêmes méthodes/arguments que votre service web. Que la classe proxy communique avec votre web service via SOAP, mais cache tout le protocole de communication de choses donc vous n'avez pas à vous inquiéter à ce sujet.
La manière de le faire est en utilisant la fonction "Ajouter une Référence de Service de la commande". Si vous spécifiez "
TestUploaderWebService
" comme le service de nom de référence, qui permettra de générer le typeTestUploaderWebService.Service1
. Cette classe aura une méthode nomméeGetFileListOnWebServer
, qui renvoie un tableau de chaînes de caractères (vous pouvez le changer en une liste de chaînes de caractères si vous le souhaitez). Vous pouvez l'utiliser comme ceci:P. S. Dites à votre instructeur de regarder "Microsoft: Services Web ASMX sont un Héritage de la Technologie”", et se demander pourquoi il de l'enseignement de la technologie.
James réponse est correcte, bien sûr, mais je dois vous rappeler que l'ensemble de la ASMX chose est, si pas obsolète, du moins pas de la méthode actuelle. Je suggère fortement que vous regardez dans WCF, si ce n'est pour éviter d'apprendre des choses que vous aurez besoin d'oublier.
écrire
return(secondmethod)
à l'intérieur de la première méthode