У меня сработало следующее: с здесь
Загрузите примеры Microsoft WCF.
Добавьте следующие файлы в ваш проект из WF_WCF_Samples \ WCF \ Extensibility \ Interop \ RouteByBody \ CS \ service
DispatchByBodyOperationSelector.cs
DispatchByBodyBehaviorAttribute.cs
Добавьте следующие атрибуты в ваш интерфейс (рядом с ServiceContract)
XmlSerializerFormat
DispatchByBodyBehavior
Добавьте следующее в ваш сервисный интерфейс
[OperationContract(Action = "")]
public void DoNothing()
{
}
Для моего сервиса WrapperName
и Wrappernamespace
равны нулю для всех сообщений. Мне пришлось пойти в DispatchByBodyBehaviorAttribute
и отредактировать ApplyDispatchBehavior()
, чтобы добавить следующие строки, чтобы проверить это:
if (qname.IsEmpty) {
qname = new XmlQualifiedName(operationDescription.Messages[0].Body.Parts[0].Name, operationDescription.Messages[0].Body.Parts[0].Namespace);
}