我对 WCF 服务比较陌生,所以如果我遗漏了明显的内容,我提前道歉。我的企业使用 EasyPost 作为我们的运输解决方案,我编写了一个 WCF 服务来处理来自 EasyPost 的运输状态 webhook 调用,如下所述: https ://www.easypost.com/docs/webhooks
简而言之,EasyPost 通过 POST 将更新对象作为 JSON 发送。问题是它向同一个服务方法发送了几种不同类型的(不可配置的)更新,我发现很难编写一个包含所有可能性的 DataContract。例如,如果它发送的参数是一个跟踪号更新,那么update.result.status将是一个字符串值;如果是批量状态更新,update.result.status将是一个对象。这有点乱。
我尝试仅处理我关心的更新类型并在其他更新类型上返回 400 状态代码,但 EasyPost 将其解释为中断并将我的服务作为 webhook 端点丢弃。
从我读到的内容来看,我似乎可以放弃数据协定的舒适性,转而使用System.ServiceModel.Channels.Message参数作为包罗万象的内容,然后手动解析消息。不过,这并不是一个明智/干净的解决方案。
我会很感激任何替代方案。