How to specify custom SoapAction for WCF

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?

Answers


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();
}

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.


Need Your Help

Which has better performance, Enum or Int in a switch case?

c# casting enums switch-statement

Which code snippet is better to use when considering the performance for the switch case with enum and int as the case parameter: