Мы используем функцию ExceptionShielding блока приложения обработки исключений Enterprise Library 4.1 в сочетании с пользовательским RoleProvider с нашими службами WCF.
Когда RoleProvider определяет, что пользователь не является ролью, и возвращает false из метода IsInRole, возникает следующее исключение:
System.ServiceModel.Security.MessageSecurityException, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
No signature message parts were specified for messages with the '{XXX}' action.
WCF затем прерывает RequestContext
операции службы, и время ожидания клиента истекает.
Я попытался найти решение по этой ссылке, но безуспешно:
http://www.codeplex.com/entlib/Thread/View.aspx?ThreadId=25236
Мы также удалили тип исключения System.Exception
из политики EHAB, фактически EHAB ничего не делал для этой политики, и это не имеет никакого эффекта.
Единственное, что предотвращает это исключение - это комментирует атрибут ExceptionShielding
в реализации службы.
Любое исправление для этой проблемы будет высоко ценится.