Измените параметры запроса службы WCF на сообщение, не нарушая клиентов - PullRequest
1 голос
/ 11 октября 2019

Если у меня есть существующая служба 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".)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...