Вы можете получить копию WSDL, отредактировать ее вручную, чтобы удалить нежелательные артефакты, и сохранить ее в известном месте. Получив версию WSDL, которая удаляет нежелательные артефакты, вы можете перенаправить запрос? Wsdl в это место:
<behaviors>
<serviceBehaviors>
<behavior name="TestServiceBehavior">
<serviceMetadata httpGetEnabled="True" externalMetadataLocation="http://localhost/TestService.wsdl"/>
</behavior>
</serviceBehaviors>
</behaviors>
Пара предостережений об этом решении. Вы должны быть осторожны с тем, что редактируете. Если вы измените критические аспекты контракта, WCF не сможет обрабатывать сообщения от клиентов, сгенерированных из него. Удаление конечной точки обычно не имеет большого значения, однако изменение имен для привязок, операций, типов сообщений и т. Д. Может вызвать проблемы.
Вам также необходимо знать об импорте. WSDL, сгенерированный WCF, обычно определяет конечные точки, а затем импортирует другой .wsdl, который определяет фактический контракт на обслуживание. Сервисный контракт wsdl in tern обычно импортирует несколько файлов .xsd, которые определяют ваше сообщение и типы данных. Вам необходимо убедиться, что у вас есть копии этих загруженных файлов относительно корня .wsdl, и что вы обновляете элементы импорта, чтобы ссылаться на них соответствующим образом.
Еще одна проблема, связанная с этим, заключается в том, что вы теперь вручную контролируете свой контракт ... что означает, что если вы его измените, вам придется снова его редактировать и заменять на любом сайте, где вы размещаете файл .wsdl. Теперь правильно разработанный контракт НИКОГДА не должен изменяться, поскольку это нарушает одно из фундаментальных правил SOA в отношении веб-сервисов. Тем не менее, похоже, что вы занимаетесь разработкой кода, так что об этом нужно знать.