Distinguishing Messages

Can I have two operations with the same name but different calling conventions use the same action?

No, the point of the action property on a message is to guarantee that the message contains sufficient information to distinguish which operation it should be associated with. It would be of no benefit to provide an action property if it did not actually uniquely define an operation.

That doesn't mean an action property is always required. Even if the contract defines a value for the action property, that value may not be literally represented unless an appropriate addressing protocol is used to transmit the message. However, not every feature works when the action property is not defined.

A default value for the action property exists for the WSDL contract even if one is not explicitly defined. This default value for an operation looks like the following.

[namespace]/[WSDL port name]/[message name]

The namespace is the target namespace defined by the contract. If the namespace uses the urn scheme, then all of the forward slash delimiters in the default value are replaced by colons.

The port name comes directly from the WSDL definition of the contract.

The message name either comes directly from the WSDL definition if provided or is created by taking

the operation name and appending either Request or Response depending on whether the message corresponds to the operation input or output. A one-way message would have nothing appended.

The default value for an operation fault follows roughly the same pattern.

[namespace]/[WSDL port name]/[operation name]/Fault/[fault name]