Прежде всего, вы должны знать, что .NET не проверяет сообщения SOAP по схеме в WSDL. Например, если часть вашего входного сообщения показывает максимальную длину 50, при отправке 51 не будет ошибок или исключений.
Во-вторых, невозможно настроить ваши классы таким образом, чтобы вы могли контролировать точную схему. Например, вы не можете вызвать атрибут maxLength в WSDL.
В-третьих, если вы должны полностью контролировать WSDL, то вам нужно написать его вручную. У вас никогда не будет полного контроля над WSDL, который генерирует .NET.
Наконец, вы уже говорили о веб-сервисах ASMX здесь. Вы не должны использовать веб-сервисы ASMX для новых разработок - они были заменены на WCF.