我目前正在开发一个 Windows 服务托管的 WCF 服务。其中一种方法有一个 URI,该 URI 被设置为从支付提供商接收回调。这是接口(interface)契约...
[OperationContract]
[WebInvoke(UriTemplate = "3DSecureCallback?TrxId={id}", Method = "POST", BodyStyle = WebMessageBodyStyle.Bare)]
void ThreeDSecureCallBack(string id, Stream body);
我遇到的这个问题是第 3 方提供商发布到我们的服务。我必须为它提供一个回调 url。所以我们可以协调付款,我们提供了一个包含交易 ID 的查询字符串参数的 URL。
在此服务的开发过程中,回调已成功。 (这是在添加 Steam 参数之前)
但是,我们现在处于需要解析发布数据的阶段。这是将第二个 'Stream' 参数添加到方法签名的点。
我遇到的问题是我收到以下异常...
For request in operation ThreeDSecureCallBack to be a stream the operation must have a single parameter whose type is Stream.
通过删除 id 参数,并且只有流,我们可以获得发布数据。这在实践中不起作用,因为我还需要查询字符串参数。
任何人都可以就如何解决这个问题提出建议吗?我真的很茫然。
提前致谢,
大卫
最佳答案
您可以访问查询字符串“id”值,如下所示WebOperationContext.Current.IncomingRequest.UriTemplateMatch.QueryParameters["id"]
现在,您的流类型方法只能有一个参数。
关于.net - 带有查询字符串的 WCF 帖子,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11261119/