WCF can do this and is probably the best choice given your requirements.

See http://stackoverflow.com/questions/950150/how-to-use-a-wsdl-file-to-create-a-wcf-service-not-make-a-call for how to generate C# classes from the WSDL you have. That should give you a contract interface. To 'implement the contract' you create a service class implementing the generated interface and host that as a service.

You'll likely need to use BasicHttpBinding as a binding type.