Трудно быть уверенным без дополнительной информации о том, что именно ожидает клиент, но это может быть проблемой стиля параметра.
По умолчанию веб-служба ASP.NET использует стиль параметров «Wrapped», что означает, что все параметры заключены в один элемент, который отправляется внутри тела SOAP.
Вы можете изменить объявление метода, чтобы использовать стиль параметра «Bare», который помещает все параметры непосредственно в тело SOAP, без элемента-оболочки. Это достигается с помощью свойства ParameterStyle в SoapDocumentMethodAttribute веб-метода.
Подробнее см. в этой записи MSDN .
В ответ на ошибку соответствия: Вы можете отключить проверку соответствия WS-I, добавив в файл web.config следующее:
<configuration>
<system.web>
<webServices>
<conformanceWarnings>
<remove name='BasicProfile1_1'/>
</conformanceWarnings>
</webServices>
</system.web>
</configuration>
Соответствие, как правило, хорошо, но это не обязательно. Поскольку в этом случае вы не контролируете определение, у вас нет большого выбора.
Также возможно, что клиент ожидает веб-сервис в стиле RPC вместо веб-сервиса в стиле документа. (Это будет контролироваться с помощью SoapRpcMethodAttribute вместо SoapDocumentMethodAttribute.) Если вам все еще не повезло после отключения предупреждения о соответствии, вы можете попробовать изменить стиль RPC и посмотреть, работает ли это.
И если есть какой-то способ, которым вы можете получить определение (либо источник, либо, еще лучше, WSDL, использованный для создания источника) для клиента, чтобы вы могли сказать, чего именно он ожидает, это поможет. Если вы можете получить WSDL, вы можете заставить .NET сгенерировать для вас метод веб-службы в правильном формате.