Я тоже изо всех сил боролся с этим и теперь, наконец, чувствую себя идиотом. Это хорошо, потому что это означает, что я действительно понимаю кое-что, что я только что взломал.
При реализации вашего сервиса ваша цель - защитить связь с помощью SSL. Вы должны быть в состоянии сгенерировать ваш файл reference.cs также в Visual Studio. Проблема, с которой вы столкнулись, заключается в том, что вы также включили обмен метаданными под привязку SSL. Инструменты генерации кода не позволяют настраивать необходимые разделы конфигурации netTcpBinding для вызовов, выполняемых для получения метаданных, когда они используются для создания файла reference.cs.
Вам следует создать две отдельные конфигурации привязки в netTcpBinding, одну для вашей службы с:
<security mode="TransportWithMessageCredential">
<message clientCredentialType="Certificate"/>
</security>
конфиг внутри и другой с:
<security mode="None" />
вместо этого. Убедитесь, что все остальные параметры совпадают, и конечная точка для точек обслуживания в ssl bindingConfig, в то время как конечная точка метаданных указывает на привязку без SSL. После этого вы сможете читать метаданные и снова обновлять справочную службу.
Стоит отметить, что для любых выпусков продуктов вы должны удалить привязку метаданных. Это гарантирует, что вы не выставляете ничего, кроме SSL.