Первое, что я хотел бы спросить, работает ли ваш сервис правильно, если вы не делаете его многопоточным. Если вы делаете последующие звонки, все ли они работают правильно и дают ли вы желаемые результаты? Если нет, то проблема на стороне сервера более чем вероятна.
Чтобы увидеть, что вы отправляете, вы можете сериализовать мыльное сообщение перед его отправкой. Убедитесь, что он генерируется правильно.
Моя работа блокирует доступ ко многим веб-сайтам, но у CodeProject есть несколько примеров, если я правильно помню.
Если работает один поток, создайте слой сериализации и запишите файлы на диск в многопоточном сценарии. Затем вы можете увидеть, что работает, а что нет, исходя из того, что ваш код считает отправкой.
Скорее всего, ваши вызовы смешиваются сервером, поскольку вы пытаетесь установить несколько соединений, в то время как ваша конечная точка может восприниматься как одно значение, что-то вроде того, что вы находитесь за межсетевым экраном NAT. Это означает, что вы можете получить соединение, но один из ваших других потоков сначала получает свое сообщение. Если это так, вы можете попробовать раскрутить каждый поток в своем домене приложений и посмотреть, поможет ли он вам. Не говоря о том, что это сработает, но я не уверен, что у меня еще есть, что еще можно попробовать.