Vaya, pues esto de los webservices, con c# parece más fácil de lo esperado. Primero se crea una clase hija de WebService, atención a la extensión
<%@WebService Language="C#" Class="Saludo"%>

/**
* Saluda.asmx
* Ejemplo básico de webservice.
* SE trata de una clase con un método accesible
* como servicio web, un método que muestra el saludo standar
* En el caso de IIS, cuelgaló en inetpub/wwwroot y verás que pasa:
* se detecta el servicio y te permite ejecutarlo
*
* Para crear el proxy:
* E:>wsdl http://localhost/Saluda.asmx?wsdl /out:c:inetpubwwwrootSaluda.cs
*
* Para crear la libreria a partir del proxy:
* csc /t:library Saluda.cs
*/

using System;
using System.Web.Services;

// Nuestra clase hereda de WebService
public class Saludo : WebService
{

[WebMethod]
public string saludoStandar( string quien )
 {
	return "Hola nena, un saludo de parte de " + quien;
 }

}
Podemos colgar ese fichero directamente de IIS y ver lo que ocurre. Magia! A continuación creamos un proxy de nuestro servicio web, cosa de la que se encarga el compilador. Y luego, podemos crear un cliente de prueba, adjuntando la librería del proxy en la compilación:
/**
* ClienteSaluda.cs
* Un programa cliente del servicio Web Saluda
* Muy simple, hay que compilarlo usando la librería creada
* con el proxy del webservice.
* Compilacion: csc /r:Saluda.dll ClienteSaluda.cs
*/

using System;


public class ClienteSaluda
{

	// Método principal
	public static void Main ()
	{
		string resultado = "";

		System.Console.WriteLine("Vamos a invocar el servicio web");

		// creamos la instancia del servicio
		Saludo miSaludo = new Saludo();
		resultado = miSaludo.saludoStandar("Icaza");

		System.Console.WriteLine("Resultado: {0}", resultado );

	}
}