【问题标题】:Map URI parameters to properties of parameter object?将URI参数映射到参数对象的属性?
【发布时间】:2012-02-01 10:53:24
【问题描述】:

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

这适用于需要简单数据类型参数的方法。

但是,以下方法需要一个复杂的对象,由于服务的 SOAP 部分,我不想更改它:

[OperationContract]
Person Test(TestParameters parameters);

而 TestParameters 看起来像(具有大量属性):

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

现在通过 GET 调用方法时,我希望能够从请求 URI 中初始化 parameters.Firstparameters.Second,例如

/Test?first=Foo&second=Bar

我已经试过申请了

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

到方法。
但是,WCF 似乎不支持这种语法。错误消息说:

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

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

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

非常感谢您的回复!

【问题讨论】:

    标签: c# wcf json web-services rest


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      • 2020-02-10
      • 2012-01-23
      • 2017-03-16
      • 2020-08-10
      相关资源
      最近更新 更多