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

Posted

技术标签:

【中文标题】将URI参数映射到参数对象的属性?【英文标题】:Map URI parameters to properties of parameter object? 【发布时间】: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 参数映射到参数对象的属性?

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

非常感谢您的回复!

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于将URI参数映射到参数对象的属性?的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 对象映射到 Azure 函数 API 请求类参数中的类

ExpressMapper / EntityFramework - 没有为此对象定义无参数构造函数

如何将对象属性作为参数传递? (JavaScript)

Mapstruct 映射:如果所有源参数属性为空,则返回空对象

Mapstruct 映射:如果所有源参数属性为空,则返回空对象

如何使用实体框架将字符串映射到 Uri 类型?