Я не думаю, что в WCF или .NET есть что-то «хитрое», чтобы действительно это сделать. Что вы передаете обратно клиенту? Экземпляр класса?
Что вы можете сделать, это запустить запрос или, если хотите, получить ответ, а затем сериализовать его в поток памяти и посмотреть, насколько он велик. Это будет не совсем точный размер - у сообщений SOAP есть некоторые накладные расходы, такие как конверт SOAP, заголовки и прочее, - но он может дать вам приблизительную оценку того, собираетесь ли вы вернуть несколько сотен байт или пара мегабайт.
Проблема в том, что на сервере может потребоваться некоторое время, чтобы просто собрать / запросить, а затем на самом деле тоже «измерить». Кроме того, вам почти потребуется два вызова - один для «MeasureResult», который возвращает Int или Long или что-то еще, а затем второй вызов «GetResult» для фактического получения результатов. Таким образом, вы приложите все усилия, чтобы собрать сообщение дважды ...
У меня нет хорошего ответа для вас, но, возможно, вам просто нужно найти какой-то другой способ, позволяющий клиенту прервать вызов, если это займет слишком много времени. Или найдите способ быстрее определить показатель размера ответа (без получения всех деталей самого ответа).