user9969
user9969

Reputation: 16040

Calling a Web Service using WCF channel Factory.Is it possible?

In the project I am working on I need to call webservices (asmx).I would like to call them using wcf and using the channelfactory(No adding service Reference).

Some might have an interface(contract)many dont.

Is there an end to end example how to do it?

    var service=ChannelFactory<?>... How do I get the webserviceContract.

Surely this must be a common scenario to be able to call a webservice (asmx)

Thanks for your time

Upvotes: 0

Views: 2257

Answers (1)

Tim
Tim

Reputation: 28530

To expand upon my comment, you should be able to create an interface that has methods that match the web service methods in the asmx service. For example:

Web Service Methods

string GetMessage()

void SendMessage(string message)

int AddNumbers(int x, int y)

Service Contract

[ServiceContract]
public interface IServiceName
{

    [OperationContract]
    string GetMessage();

    [OperationContract]
    void SendMessage(string message);

    [OperationContract]
    int AddNumbers(int x, int y)
}

ChannelFactory

ChannelFactory<IServiceName> serviceFactory =
          new ChannelFactory<IServiceName>(new BasicHttpBinding(), 
                             "http://www.services.com/Service.asmx");

Not 100% sure this will work, but it would be easy to try out. Also, you'd probably want to set the namespace on the service contract ([ServiceContract(Namespace = "somenamespace")]) to match the legacy asmx service, otherwise the messages might not get processed.

Upvotes: 1

Related Questions