Просто взглянув на код, похоже, вы забыли добавить начальный тег вашего тела: <soapenv:Body>
Если у вас нет особых причин для создания сообщения вручную, я настоятельно рекомендую использовать прокси-сервер, созданный с помощью инструмента svcutil.exe, который поставляется с Visual Studio 2008 или более поздней версии. (этот инструмент автоматически используется Visual Studio, если вы используете функцию «Добавить ссылку на службу»), при условии, что у вас нет проблем с использованием WCF для обработки связи с вашим веб-сервисом.
В качестве альтернативы, если по какой-то причине вы не можете использовать WCF, например, если вы разрабатываете в .Net 2.0 с Visual Studio 2005, и в этом случае у вас не будет возможности «Добавить ссылку на службу», тогда все равно может используйте более старую функцию «Добавить веб-ссылку» в Visual Studio для создания прокси для вашего веб-сервиса. Эта функция использует инструмент wsdl.exe, а не svcutil.exe.
В противном случае, если вам действительно необходимо продолжить этот подход построения сообщения SOAP вручную, то я бы по крайней мере рекомендовал добавить некоторые записи в ваше приложение, чтобы вам было легче анализировать созданное сообщение, когда что-то идет не так.