Если вы выполняете проверку на клиенте и должны иметь допустимые значения, как только они будут переданы в метод (вызов веб-службы), я бы выдал исключение. Это может быть исключение, указывающее, что параметр недопустим с именем параметра. (см .: ArgumentException)
Но вы, возможно, не захотите полагаться на то, что клиент правильно проверит данные, и это заставит вас предположить, что данные могут быть недействительными при поступлении в веб-службу. В этом случае это не исключительный случай и не должен быть исключением. В этом случае вы могли бы вернуть объект enum или Result, у которого свойство Status имеет значение enum (OK, Invalid, Incomplete) и свойство Message, заданное со спецификой, например, имя параметра.
Я бы позаботился о том, чтобы такого рода ошибки были обнаружены и исправлены во время разработки. Ваш процесс обеспечения качества должен тщательно проверять действительное и недействительное использование клиента, и вы не хотите передавать эти технические сообщения обратно клиенту. Вместо этого вы хотите обновить систему проверки, чтобы предотвратить попадание недействительных данных в сервисный вызов.
Я предполагаю, что для любой службы WCF будет более одного интерфейса пользователя. Одним из них может быть веб-интерфейс, но позже я могу добавить другой, используя WinForms, WinCE или даже собственное мобильное приложение для iPhone / Android, которое не соответствует ожиданиям клиентов .NET.