¿Cómo llamar a un método de servicio web?

Tengo un servicio web que contiene este método:

[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;
}

Esto devuelve una lista de nombres de archivos en una carpeta. Cuando depuro la aplicación, funciona bien.

Lo que quiero hacer es llamar a este método de servicio web desde una aplicación winform. Agregué una referencia al archivo .dll del servicio web, y así es como llamo al método anterior:

private void Form1_Load(object sender, EventArgs e)
{
    List<string> files = TestUploaderWebService.Service1.GetFileListOnWebServer();
}

El código anterior no funciona: cuando ingresa al método, la ruta de la aplicación web es nula y muchas propiedades de la clase HostingEnvironment también son nulas. ¿Dónde está mi error al intentar llamar a un método de servicio web desde otra aplicación winform?

Tenga en cuenta que el servicio web se realiza en Visual Web Developer Express y la forma de ganancia en Visual C # express; Esta es la razón por la que tuve que agregar el servicio web dll como referencia en la aplicación winform. No tengo Visual Studio completo, lo que me hubiera permitido una solución única con ambos proyectos.

Soy nuevo en servicios web.

PD: me encanta el formato de texto sobre la marcha aquí :)

Respuestas a la pregunta(4)

Su respuesta a la pregunta