メッセージの値をカスタマイズする場合(WSDLに反映されている場合のみ)、アクション/ ReplyActionプロパティが必要です。あなたが持っていない場合、デフォルトはアクションの場合は<serviceContractNamespace> + <serviceContractName> + <operationName>
、返信の場合は<serviceContractNamespace> + <serviceContractName> + <operationName> + "Response"
です。
以下のコードは、サービス内のすべての操作のAction/ReplyActionプロパティを出力します。
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();
}
}
だから、かなり多くのを見るでしょうそれを自分の上にそれを構築するには? – michael
いいえ、返信アクションは「http://schemas.mycompany.com/MyService/MyOperationResponse」です。操作のアクション/応答アクションのプロパティを出力する方法についての回答を更新します。 – carlosfigueira
申し訳ありませんが、私は 'Action'と' ReplyAction'は同じであるが、 'Response'が追加されていることを意味しました。 – michael