Я перемещаю свои веб-службы WSE3 в WCF.Но клиент - это клиент WSE3.
Все контракты на операции возвращают экземпляр классов MessageContract
.Это работает для 2 операций, но почему-то не удается для одной операции одного и того же контракта на обслуживание.Ошибка:
The signature or decryption was invalid.
Когда я просматриваю файл трассировки WCF, я обнаружил следующее:
The formatter threw an exception while trying to deserialize the message: Error in deserializing body of request message for operation 'MyOperationName'. End element 'Body' from namespace 'http://schemas.xmlsoap.org/soap/envelope/' expected. Found element 'MyOperationName' from namespace 'urn:MyProject:MyModule:2006:04:MyAuthorizationModule'.
Я наблюдал, когда яиспользовать атрибут XmlRoot
для украшения класса ответа (вместо использования атрибута MessageContract
), я не получаю это исключение.Однако объект ответа не может быть десериализован.то есть я вижу ответ XML во входной трассировке, но поскольку ожидаемая структура XML не совпадает, вызов службы возвращает null
на стороне клиента.
Класс MessageContract
имеет только одно открытое свойство (MessageBodyMember
), который возвращает экземпляр другого класса, который украшен атрибутом XmlRoot
.Этот класс (который украшен xmlRoot
) имеет свойство, которое дает Collection
объектов некоторого класса сущностей, у которого есть XmlElement
свойства.
Какие все вещи мне нужно проверить / проверить?Я могу предоставить фрагменты кода класса, если требуется.