我必須採取一些預定義的WSDL(我不控制這些),並將它們暴露在我們的設備上以回覆各種SOAP/UPnP請求。WCF - 泛化動作字符串
無論如何,我已經完成了所有這些工作,但問題已經解決,因爲我有一項服務可以在任意數量的渠道上申請。我將解釋:
[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消息的一部分作爲參數傳遞給我正在實現的方法。
我認爲我可以實現這一點的唯一方法是指定其他一些方法,我們將其稱爲Dispatcher,並使用Action =「*」,然後使用OperationContext.Current.IncomingMessageHeaders.Action
手動解析接收到的操作。這看起來像是一個非常陰暗的做事方式。我確信這裏的主要障礙是我對WCF的經驗不足。
任何幫助你能提供將不勝感激。
感謝,
感謝您的評論Sixto。正如你很快就會看到的,我仍然從這件事開始。也許我可以重新構建我的問題,以獲得某種不同類型的解決方案。我確實沒有修改SVCUtil.exe生成的接口文件的問題,但我可以通過各種UPnP客戶端接收128個以上的不同頻道,並且手動編寫3或4個服務的所有這些內容將會變得非常困難。 – 2011-04-21 21:36:48