You only need the Action / ReplyAction properties if you want to configure these values ββin the messages (and they are reflected in the WSDL). If you do not have them, the default value is <serviceContractNamespace> + <serviceContractName> + <operationName> for Action and <serviceContractNamespace> + <serviceContractName> + <operationName> + "Response" for ReplyAction.
The code below shows the Action / ReplyAction properties for all operations in the service.
public class StackOverflow_6470463 { [ServiceContract(Namespace = "http://schemas.mycompany.com/", Name = "MyService")] public interface IMyService { [OperationContract(Name = "MyOperation")] string MyOperation(string request); } public class Service : IMyService { public string MyOperation(string request) { return request; } } public static void Test() { string baseAddress = "http://" + Environment.MachineName + ":8000/Service"; ServiceHost host = new ServiceHost(typeof(Service), new Uri(baseAddress)); host.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), ""); host.Open(); Console.WriteLine("Host opened"); foreach (ServiceEndpoint endpoint in host.Description.Endpoints) { Console.WriteLine("Endpoint: {0}", endpoint.Name); foreach (var operation in endpoint.Contract.Operations) { Console.WriteLine(" Operation: {0}", operation.Name); Console.WriteLine(" Action: {0}", operation.Messages[0].Action); if (operation.Messages.Count > 1) { Console.WriteLine(" ReplyAction: {0}", operation.Messages[1].Action); } } } Console.Write("Press ENTER to close the host"); Console.ReadLine(); host.Close(); } }
source share