2012-01-03 78 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参数映射到参数对象的属性?

否则,你知道这种行为是否可以轻松添加?

非常感谢您的回应!

回答