Вы можете создать атрибут SoapExtensionAttribute и применить его к своим методам веб-службы.
Создайте класс, производный от SoapExtensionAttribute.
Создайте еще один класс, производный от SoapExtension.
Тип вашего SoapExtensionAttribute должен соответствовать типу вашего SoapExtension.
Когда вы находитесь в SoapExtension, у вас есть доступ к моменту сериализации / десериализации данных.
Вот 4 конкретных этапа:
SoapMessageStage.BeforeSerialize
SoapMessageStage.AfterSerialize *
SoapMessageStage.BeforeDeserialize *
SoapMessageStage.AfterDeserialize
Те, у которых есть '*', - это этапы, на которых вы хотите получить доступ к потоку.
Оттуда вы можете регистрировать xml, который входит и выходит из вашего веб-сервиса.
Это то, что мы делаем здесь, это прекрасно работает.
Вот ссылка, которая объясняет более подробно:
http://progtutorials.tripod.com/soapext.htm
Надеюсь, что это помогло.