Как указать пользовательский SoapAction для WCF

Я создаю службу WCF, которая будет вызвана из другой службы.

В WSDL soapaction появляется следующим образом

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

Я хочу, чтобы он был

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

Как я могу указать пользовательское действие мыла?

Ответ 1

Вы можете указать его в определении контракта на обслуживание:

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

Ответ 2

Вы также можете указать свойство Action в контракте операции:

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

Вы также можете установить ReplyAction, если вам нужно.

В ответе Дарина будет установлено действие на основе пространства имен, имени контракта и имени операции, которое намного проще в использовании, но может не работать, если вам нужно установить действие именно так, как вы хотите.