c# - 将 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”。)
解决方案
推荐阅读
- python - 正则表达式提取与给定模式中的位置匹配的子字符串
- javascript - 如何使用javascript读取目录中的最新文件?
- json - 如何使用 AngularJS 和 JsonResult ASP.NET MVC 使用 ng-repeat 列出值
- angular - 如何转换为可编辑的选择框?
- python - PYTHON:对已关闭文件的 I/O 操作
- python - numpy数组中的向量化非零组
- javascript - 使用基于位置的 MouseEvent 触发输入滑块的更改
- python - 多继承;不能从 2 个父类调用函数
- git - PhpStorm Git 未通过通用代理连接
- java - 如何在 Windows 中通过命令提示符运行 Junit.Jupiter 代码