tags:

views:

44

answers:

2

Hi, I am creating a WCF service which will be called from another service.

In the WSDL soapaction is appearing as follows

<soap12:operation soapAction="http://tempuri.org/ISubscriptionEvents/MyMethod" style="document" />

I want it to be

<soap12:operation soapAction="http://www.TextXYZ.com/FUNC/1/0/action/MyMethod" style="document" />

How can I specify the custom soap action?

+3  A: 

You could specify it in the service contract definition:

[ServiceContract(Namespace = "http://www.TextXYZ.com/FUNC/1/0/action")]
public interface IMyServiceContract
{
    [OperationContract]
    void MyMethod();
}
Darin Dimitrov
+1  A: 

You could also specify the Action property on the operation contract:

[ServiceContract]
public interface IMyServiceContract
{
    [OperationContract(Action = "http://www.TextXYZ.com/FUNC/1/0/action/MyMethod")]
    void MyMethod();
}

You can also set the ReplyAction if you need to.

Darin's answer will set the action based on the namespace, the contract name, and the operation name, which is much easier to use, but may not work if you need to set the action to exactly what you want.

Quartermeister