首页 > 解决方案 > 将 WCF 服务请求参数更改为消息而不中断客户端

问题描述

如果我有一个现有的 WCF SOAP 服务,它具有这样的操作:

[OperationContract]
List<string> GetDetails(int id, string name);

在底层,WCF 生成一个GetDetails_InputMessage类型来表示方法的参数。

是否有某种方法可以更改服务方法实现以显式使用此类型,而不会破坏任何现有客户端?

[OperationContract]
List<string> GetDetails(GetDetails_InputMessage parameters);
// with some extra magic?

(或者更准确地说,声明我自己的传输类型最终会生成完全相同的 WSDL 和行为,以便现有客户端无法区分这两者。)

我认为可能会涉及额外的魔法,MessageContract但我无法找到任何关于将现有操作从一个操作切换到另一个操作而不破坏任何内容的参考。

(进一步参考:我有一个现有的 SOAP 服务,我已经添加了一个 webHttp 绑定,但注意到帮助页面在报告WrappedRequest正文方面真的很糟糕,当需要通过发送多个参数时需要它正文。所以我想Bare用明确指定的包装类型将它们切换到正文(因为它似乎确实能够呈现那些好的),但它不会破坏现有的 SOAP 客户端。我会也接受这个问题的替代答案,不是“使用 IIS”。)

标签: c#wcfsoap

解决方案


推荐阅读