Ответ 1
Да, это нормально для WCF. По умолчанию WCF будет показывать только операции в самом WSDL - структуры данных документируются в файлах XSD, связанных с WSDL файлом.
Я уверен, что если вы посмотрите на свой WSDL, вы увидите что-то похожее на это почти в верхней части WSDL:
<xsd:schema targetNamespace="http://tempuri.org/Imports">
<xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd0"
namespace="http://tempuri.org/" />
<xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd1"
namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
<xsd:import schemaLocation="http://localhost:8000/HelloIndigo?xsd=xsd2"
namespace="http://schemas.datacontract.org/2004/07/WCF_Simple_Service" />
</xsd:schema>
Это ссылки на необходимые файлы XSD - введите URL-адрес в свой браузер, и один из них (скорее всего тот, у которого самый высокий номер, но не обязательно должен быть тот), будет содержать сложное определение типа.
Попробуйте использовать этот URL в своем браузере (адаптируйте порт и фактический URL к тому, что у вас есть):
http://localhost:8080/HelloIndigo?xsd=xsd2
Это должно дать вам XSD для вашего сложного типа
Эта функция вызвала некоторые проблемы за последние годы - некоторые клиенты не могут справиться с этим (100% правильный и совершенно тонкий) синтаксис. Таким образом, в .NET 4.5 WCF будет иметь новый параметр (...?singlewsdl
) для вывода всего WSDL, включая все элементы XSD - см. Что нового в WCF 4.5? Один файл WSDL для получения дополнительной информации об этом.