Веб-сервис содержит пустой тег сервиса

Я создал сервис 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 могли быть только первые две части, а не настоящая страница. Я не думаю, что вам повезет, если вы не начнете копаться в своем веб-сервере.

Другие вопросы по тегам