Веб-сервис содержит пустой тег сервиса
Я создал сервис WCF.
В WSDL я не вижу URL и PORT, на которые должна связываться служба.
Все, что я вижу, это:
<wsdl:service name="SimpleWebService"/>
Есть идеи, что я делаю не так? может быть, что-то в web.config?
<system.serviceModel>
<client />
<bindings>
<webHttpBinding>
<binding closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
</binding>
</webHttpBinding>
</bindings>
<services>
<service name="WS.OS.SimpleWS" behaviorConfiguration="myServiceBehavior">
<endpoint name="webHttpBinding" address="" binding="webHttpBinding" contract="WS.OS.SimpleWS" behaviorConfiguration="webHttp" />
<endpoint name="mexHttpBinding" address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webHttp">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
2 ответа
Создание конечной точки с помощью webHttpBinding создает конечную точку REST. Конечные точки REST не имеют wsdl. В вашем случае вы видите сгенерированный wsdl, потому что вы включили поведение метаданных. Конечная точка будет указана в WSDL только для конечных точек SOAP. Это хороший пост в блоге, который поможет вам лучше понять это: http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-a-k-a-rest-endpoint-does-not-work.aspx
Глядя на вопрос и конфигурацию, я предполагаю (мы все знаем, к чему это приводит), что ваша служба размещена в IIS. Поэтому, учитывая адрес "" и не указав порт, вам нужно будет просмотреть настройки IIS, чтобы найти сайт и порт, на котором открыт сервис. Значение по умолчанию для http - 80, а https - 443.
В качестве быстрого примера, если ваша служба находится на "веб-сайте по умолчанию" IIS, то ваша служба, вероятно, будет по адресу:
http://YourServer/YourService/YourService.svc
Если есть веб-приложение, которое размещено там и находится на другом сайте, вам нужно будет найти настройки IIS, чтобы найти его. Также обычно IIS размещает SVC в качестве страницы по умолчанию, чтобы в URI могли быть только первые две части, а не настоящая страница. Я не думаю, что вам повезет, если вы не начнете копаться в своем веб-сервере.