あらかじめ定義された WSDL (私はこれらを制御しません) をいくつか取得し、それらをデバイスに公開して、さまざまな SOAP/UPnP 要求に応答する必要があります。
とにかく、私はこれですべて機能していますが、任意の数のチャネルで要求できるサービスが 1 つあるため、問題が発生します。説明します:
[System.ServiceModel.ServiceContractAttribute(Namespace="urn:some:namespace:1", ConfigurationName="myInterface")]
public interface myInterface
{
[System.ServiceModel.OperationContractAttribute(Action="urn:some:namespace:1#GetConfiguration", ReplyAction="*")]
[System.ServiceModel.XmlSerializerFormatAttribute()]
[return: System.ServiceModel.MessageParameterAttribute(Name="config")]
MyConfigurationResponse GetConfiguration(MyConfigurationRequest request);
}
基本的に、私がやろうとしていることは(この構文が完全に間違っていることは認識していますが、要点を理解できると思います)これです:
[System.ServiceModel.ServiceContractAttribute(Namespace="urn:some:namespace:{channelNumber}", ConfigurationName="myInterface")]
public interface myInterface
{
[System.ServiceModel.OperationContractAttribute(Action="urn:some:namespace:{channelNumber}#GetConfiguration", ReplyAction="*")]
[System.ServiceModel.XmlSerializerFormatAttribute()]
[return: System.ServiceModel.MessageParameterAttribute(Name="config")]
MyConfigurationResponse GetConfiguration(MyConfigurationRequest request, String channelNumber);
}
元の Action メッセージの一部を、実装しているメソッドにパラメーターとして渡してほしいだけです。
これを実装できると私が考えた他の唯一の方法は、他のメソッドを指定することです。Action="*" を使用して Dispatcher と呼び、OperationContext.Current.IncomingMessageHeaders.Action
. これは、物事を行うための本当に怪しげな方法のように思えます。ここでの主な障害は、私の WCF の経験不足にあると確信しています。
あなたが提供できるどんな助けも大歓迎です。
ありがとう、