将URI参数映射到参数对象的属性?

时间:2012-01-03 11:30:05

标签: c# wcf json web-services rest

我正在尝试创建一个提供SOAP和JSON端点的WCF服务 为了将请求URL的参数映射到方法参数,我使用WebGetAttribute的{​​{1}}方法。

这适用于期望简单数据类型参数的方法。

但是,以下方法需要一个复杂的对象,我不想因为服务的SOAP部分而改变它:

UriTemplate

而TestParameters看起来像(具有更多属性):

[OperationContract]
Person Test(TestParameters parameters);

现在通过GET调用方法时,我希望能够从请求URI初始化[DataContract] public class TestParameters { [DataMember] public string First { get; set; } [DataMember] public string Second { get; set; } } parameters.First,例如

parameters.Second

我已经尝试过申请

/Test?first=Foo&second=Bar

方法。
但是,WCF似乎不支持此语法。错误消息显示:

  

System.InvalidOperationException:合同中的“测试”操作   'IService1'有一个UriTemplate,它需要一个名为的参数   'PARAMETERS.FIRST',但没有带有该名称的输入参数   操作。

是否有其他语法允许将URI参数映射到参数对象的属性?

否则,您是否知道是否可以轻松添加此行为?

非常感谢您的回复!

1 个答案:

答案 0 :(得分:1)

您必须使用JSON,例如与PUT或POST方法结合使用。有关说明,请参阅this post