How to specify custom SoapAction for WCF

2020-06-12 03:04发布

问题:

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?

回答1:

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


回答2:

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.