Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Configuring Bindings WCF / 1 сообщений из 1, страница 1 из 1
08.11.2008, 13:32
    #35641675
Alex_BBB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Configuring Bindings WCF
Вот такой HelloWorld сервис
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
namespace HelloWorld
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        string GetData(int value);
    }
}

///
namespace HelloWorld
{
    public class Service1 : IService1
    {
        public string GetData(int value)
        {
            return string.Format("You entered: {0}", value);
        }
    }
}

Что бы сервис мог принимать как новые (wsHttpBinding) так и старые (basicHttpBinding) виды SOAP пакетов таким образом кофигурирую web.config:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<system.serviceModel>

    <!--services-->
    <services>
	<service name="HelloWorld.Service1" behaviorConfiguration="HelloWorld.Service1Behavior">

	    <!-- Service Endpoints -->
            <endpoint
                address=""
                binding="wsHttpBinding"
                contract="HelloWorld.IService1">
            </endpoint>

            <endpoint
                address="/basicSoap"
                binding="basicHttpBinding"
                contract="HelloWorld.IService1">
            </endpoint>

            ...

       </service>
    </services>

    <!--behaviors-->
    ...
</system.serviceModel>

Таким образом "новые" SOAP-запросы можно посылать по адресу
http://localhost:1525/Service1.svc,
а "старые" по
http://localhost:1525/Service1.svc/basicSoap

При такой конфигурации можно получить общий для обоих endpoint wsdl по адресу
http://localhost:1525/Service1.svc?wsdl

На MSDN в статье Configuring Bindings for Windows Communication Foundation Services , говорится как сделать что бы для endpoint с адресом /basicSoap получать свой WSDL по адресу:
http://localhost:1525/Service1.svc/basicSoap?wsdl
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<behaviors>
    <behavior name="MetaPlusExceptions" >
        <metadataPublishing enableGetWsdl="true" /> 
    </behavior>
</behaviors>
<services>
    <service 
       type="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
       serviceBehaviorName="MetaPlusExceptions">
       <endpoint 
          address="http://computer:8080/Hello"
          contract="HelloWorld, IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"
          binding="basicHttpBinding" />
       </endpoint>
    </service>
</services>

Однако пример с ошибкой:
behaviors не может содержать behavior , а у behavior нет <metadataPublishing>...

Как сделать что бы WSDL для basicHttpBinding можно было получить по адресу:
http://localhost:1525/Service1.svc/basicSoap?wsdl

Как избавиться от Service1.svc в УРЛ?

Спасибо.
...
Рейтинг: 0 / 0
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Configuring Bindings WCF / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]