Исключение WCF - Часть сообщения «Тело», «http://www.w3.org/2003/05/soap-envelope'» не была подписана. вопрос - PullRequest
1 голос
/ 12 августа 2009

Я запускаю клиент WCF локально, который всегда выдает исключение MessageSecurityException с текстом: "Необеспеченная или неправильно защищенная ошибка была получена от другой стороны. См. Внутреннее исключение FaultException для получения кода ошибки и подробностей."

Внутреннее сообщение об исключении: « Произошла ошибка при проверке безопасности для сообщения »

Я установил трассировку, и в этом файле я вижу сообщение об исключении «внутреннее внутреннее» как: " The Body", 'http://www.w3.org/2003/05/soap-envelope' необходимая часть сообщения не подписана."

Все привязки идеально совпадают между клиентом и службой, использующей netTcpBinding с securityMode = "Message".

ServiceContract, украшающий интерфейс службы:

 [ServiceContract(ProtectionLevel = ProtectionLevel.None)]

Что может быть причиной моих ошибок? Я не эксперт WCF, поэтому, если вам нужна дополнительная информация, просто комментируйте. Любые идеи о том, что попробовать, тоже будут полезны, я просто не знаю, что здесь происходит.

1 Ответ

1 голос
/ 12 августа 2009

По умолчанию все сообщения подписываются и шифруются в WCF, и с какой стати вы когда-нибудь захотите отключить это ??

Таким образом, в этом случае, скорее всего, ваш клиент зашифровал и подписал сообщение, но сервер не понимает его из-за вашего атрибута в контракте на обслуживание.

Моя рекомендация: если у вас нет веских причин, никогда не вмешивайтесь и не меняйте эти настройки - просто забудьте об этом атрибуте в вашей службе и оставьте значения по умолчанию:

[ServiceContract(ProtectionLevel = ProtectionLevel.EncryptAndSign)]

или

[ServiceContract]

Если вам действительно нужно отключить его, вам нужно отключить его с обеих сторон разговора - и клиент, и сервер должны договориться о том, зашифрованы или подписаны сообщения.

Марк

...