Лучший способ указать, что ваш веб-сервис WCF завершился неудачей, - это выдать исключение FaultException. В файлах web.config вашей службы есть настройки, позволяющие передавать сообщение об ошибке клиенту как часть ошибки.
Другим подходом может быть наследование обоих ваших результатов от одного базового класса или интерфейса. Служба будет возвращать экземпляр базового типа. Затем вы можете использовать атрибут KnownType, чтобы сообщить клиенту, что может быть возвращено несколько типов. Если подумать, возможно, можно использовать Object в качестве базового типа, но я не пробовал.
В случае неудачи любого из этих подходов вы можете создать пользовательский объект результата, который будет содержать как свойства результата, так и ошибки, и ваш клиент сможет затем решить, какие действия предпринять. Мне пришлось использовать этот подход для Silverlight 2, потому что бета-версия 2 еще не полностью поддерживает контракты на отказ. Это не красиво, я обычно не рекомендую это, но если это единственный способ, который работает, или вы чувствуете, что это лучший подход для вашей ситуации ...
Если у вас проблемы с ADO.NET Data Services, у меня там меньше опыта.
Вот некоторая информация о реализации FaultContracts