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

标签 c# wcf json web-services rest

我正在尝试创建一个提供 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: Operation 'Test' in contract 'IService1' has a UriTemplate that expects a parameter named 'PARAMETERS.FIRST', but there is no input parameter with that name on the operation.

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

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

非常感谢您的回复!

最佳答案

您必须求助于 JSON,例如结合 PUT 或 POST 方法。参见 this post寻求解释。

关于c# - 将 URI 参数映射到参数对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8711607/

相关文章:

c# - 更改命名空间导致的错误?

c# - "Reverse"WCF 服务(从客户端定义构建服务器)

java - 将 json 数据写入和读取到内部存储 android

javascript - 我怎样才能更好地写出这份报告候选人的功能呢?

json - 替换 EAV 时 JSON(B) 中的数据完整性

c# - 处理 session 超时数据丢失

c# - 嵌套的 Select MySQL 语句到 LINQ

c# - 无效的属性标识符字符 : ‘. Path ' ', 第 1 行,将 json 字符串解析为对象时的位置 1

c# - 使用 msmq 队列对服务进行负载平衡?

c# - WCF 3.5 和 UDP