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

本文关键字:参数 属性 对象 映射 URI | 更新日期: 2023-09-27 18:19:30

我正在尝试创建一个WCF服务,该服务提供SOAP和JSON端点
为了将请求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:协定中的操作"Test"IService1"的UriTemplate需要名为"PARAMETERS.FIRST",但上没有该名称的输入参数操作。

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

否则,你知道这种行为是否可以很容易地添加吗?

非常感谢您的回复!

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

您将不得不求助于JSON,例如与PUT或POST方法结合使用。请参阅这篇文章以获得解释。