Я не очень хорошо разбираюсь в MSMQ, но есть действительно хорошая серия постов в блоге Тома Холландера о MSMQ, IIS и WCF: научить их красиво играть - в части 3, которая является ссылкой Том говорит о транзакции.
MSMQ может быть транзакционным или нет. А в WCF можно оформить как контракт на обслуживание, так и отдельные контракты (методы) операций с атрибутами, связанными с транзакцией, такими как разрешение, запрет или требование контекста транзакции.
Насколько я понимаю, в вашей настройке вы не хотите, чтобы часть MSMQ была транзакционной, но вы должны иметь возможность использовать ее, даже если присутствует окружающая транзакция. В этом случае вам необходимо добавить TransactionFlow = "ALlowed" к вашему операционному контракту следующим образом:
[ServiceContract]
public interface ILoggingService
{
[OperationContract]
[TransactionFlow(TransactionFlowOption.Allowed)]
void LogData(......);
}
Это должно сделать это!
Марк