2012-01-03 115 views
5

我正在嘗試創建一個提供SOAP和JSON端點的WCF服務。
爲了將請求URL的參數映射到方法參數,我使用了WebGetAttributeUriTemplate方法。將URI參數映射到參數對象的屬性?

這適用於期望簡單數據類型參數的方法。

但是,下面的方法需要一個複雜的對象,我不想改變它,因爲該服務的SOAP部分組成:

[OperationContract] 
Person Test(TestParameters parameters); 

而TestParameters樣子(與屬性的數量較多):

[DataContract] 
public class TestParameters 
{ 
    [DataMember] 
    public string First 
    { 
     get; 
     set; 
    } 
    [DataMember] 
    public string Second 
    { 
     get; 
     set; 
    } 
} 

當現在調用通過GET方法中,我想能夠從請求初始化parameters.Firstparameters.Second URI,例如

/Test?first=Foo&second=Bar 

我已經嘗試過申請

[WebGet(UriTemplate = "/Test?first={parameters.First}&second={parameters.Second})] 

的方法。
但是,此語法似乎不受WCF支持。該錯誤消息說:

System.InvalidOperationException:操作在合同 「IService1」測試'有希望一個名爲 「PARAMETERS.FIRST」參數UriTemplate,但與該名稱上沒有輸入參數 的操作。

是否有任何其他語法允許將URI參數映射到參數對象的屬性?

否則,你知道這種行爲是否可以輕鬆添加?

非常感謝您的迴應!

回答