Если у меня есть существующая служба 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
body с явно указанным типом оболочки (поскольку он, по-видимому, способен отображать их нормально), но таким образом, чтобы он также не нарушал существующие клиенты SOAP. Я также принял бы альтернативный ответ на этот вопрос , который не "использует IIS".)