Ho un servizio Web che contiene questo metodo:Come chiamare un metodo di servizio Web?
[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;
}
Questo restituisce un elenco di nomi di file in una cartella. Quando eseguo il debug dell'applicazione, funziona correttamente.
Quello che voglio fare è chiamare questo metodo webservice da un'applicazione winform. Ho aggiunto un riferimento al DLL del webservice, ed è così chiamo il metodo di cui sopra:
private void Form1_Load(object sender, EventArgs e)
{
List<string> files = TestUploaderWebService.Service1.GetFileListOnWebServer();
}
Il codice sopra non funziona - quando entra nel metodo, il percorso della applicazione web è nullo e anche molte proprietà della classe HostingEnvironment sono nulle. Dov'è il mio errore, nel tentativo di chiamare un metodo di servizio web da un'altra app Winform?
Si noti che il servizio Web è realizzato in Visual Web Developer Express e Winform in Visual C# express; questo è il motivo per cui ho dovuto aggiungere la dll del servizio web come riferimento nell'app winform. Non ho Visual Studio completo, il che mi avrebbe consentito un'unica soluzione con entrambi i progetti.
Sono nuovo ai servizi web.
PS - amo la formattazione del testo on-the-fly qui :)
Superb - grazie mille! Ora ho rimosso la ref dll e aggiunto un riferimento di servizio all'URL. Tuttavia ho notato che non mi dà accesso diretto al mio metodo, invece ho accesso alle classi chiamate: GetFileListOnWebServerRequest, GetFileListOnWebServerRequestBody, GetFileListOnWebServerResponse, GetFileListOnWebServerResponseBody.c'è qualche risorsa web che posso leggere riguardo a queste classi autogenerate? Non so come usarli. –
Genera molte parti, ma cerca solo il metodo GetFileListOnWebServer stesso. –
In realtà, guarda l'esempio di John. –