我正在尝试创建一个提供 SOAP 和 JSON 端点的 WCF 服务。
为了将请求 URL 的参数映射到方法参数,我使用了 WebGetAttribute
的 UriTemplate
方法。
这适用于需要简单数据类型参数的方法。
但是,以下方法需要一个复杂的对象,由于服务的 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.First
和 parameters.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/