Множественный базовый адрес http для собственной службы WCF?

У меня есть служба WCF с одной конечной точкой http, я хотел бы добавить еще один адрес конечной точки http с другой привязкой. Служба не размещена в IIS, поэтому установка параметра multipleSiteBindingsEnabled бесполезна.

Пробую что-то вроде этого.

<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

    <services>
            <service behaviorConfiguration="ServiceBehaviorConfiguration"
             name="ServerService">
                <endpoint address="http://localhost:6732/ServerService" binding="webHttpBinding" behaviorConfiguration="webby"
         contract="IClientAppContract">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="http://localhost:800/ServerService" binding="basicHttpBinding"
         contract="IClientAppContract">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
                <host>
                    <baseAddresses>
                        <add baseAddress="http://localhost:800/ServerService" />
                        <add baseAddress="http://localhost:6732/ServerService" />
                    </baseAddresses>
                </host>
            </service>
        </services>
</system.serviceModel>

person Vignesh.N    schedule 05.06.2012    source источник


Ответы (2)


Попробуйте что-то вроде конфигурации, показанной ниже. Он предоставляет несколько конечных точек через один порт, но я уверен, что этот шаблон конфигурации поддерживается WCF.

    <services>
        <service behaviorConfiguration="ServiceBehaviorConfiguration"
                 name="ServerService">
            <endpoint address=""
                      binding="webHttpBinding"
                      behaviorConfiguration="webby"
                      contract="IClientAppContract">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="basic"
                      binding="basicHttpBinding"
                      contract="IClientAppContract">
                <identity>
                    <dns value="localhost" />
                </identity>
            </endpoint>
            <endpoint address="mex"
                      binding="mexHttpBinding"
                      contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:800/ServerService" />
                </baseAddresses>
            </host>
        </service>
    </services>
person Sixto Saez    schedule 05.06.2012
comment
Да, это должно работать, но могу ли я каким-либо образом иметь два разных базовых адреса? - person Vignesh.N; 06.06.2012
comment
WCF использует HTTP (и любой другой транспорт) таким образом, что разные конечные точки представляют собой просто разные пути (маршруты) от одного корневого адреса. У вас могут быть разные базовые адреса, если у вас разные транспорты (например, net.tcp, net.msmq), но в рамках одного транспорта у вас может быть только один базовый адрес. Я не верю, что WCF предлагает способ в конфигурации конечной точки использовать определенный базовый адрес для данного транспорта. Это потребуется, чтобы сделать то, что вы просите. - person Sixto Saez; 06.06.2012

Вы можете создать две службы, каждая из которых имеет свой собственный базовый адрес, но их внутренние конечные точки идентичны.

person timw    schedule 06.06.2012