Почему мы не можем зарегистрировать несколько базовых адресов (используя один и тот же транспортный протокол) в ServiceHost? - PullRequest
1 голос
/ 17 ноября 2010

Мы можем зарегистрировать несколько баз адреса с Servicehost, пока адреса не используют один и тот же транспорт Протокол:

ServiceHost host = new ServiceHost (TypeOf (MyService), tcpBaseAddress, httpBaseAddress);

В чем причина запрета ServiceHost регистрировать несколько базовых адресов, использующих один и тот же транспортный протокол?

1 Ответ

1 голос
/ 18 мая 2011

Я полагаю, потому что механизм конфигурации WCF не будет знать, с каким базовым адресом разрешать относительные адреса.

С http://msdn.microsoft.com/en-us/library/ms734786.aspx:

<service name="Microsoft.ServiceModel.Samples.CalculatorService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
<!-- Not allowed, just for demonstration purposes -->
            <add baseAddress="http://localhost:8000/ServiceModelSamples/serviceOther"/>
          </baseAddresses>
        </host>
        <endpoint address=""
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="/test"
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="http://localhost:8001/hello/servicemodelsamples"
                  binding="wsHttpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <endpoint address="net.tcp://localhost:9000/servicemodelsamples/service"
                  binding="netTcpBinding"
                  contract="Microsoft.ServiceModel.Samples.ICalculator" />
        <!-- the mex endpoint is another relative address exposed at 
             http://localhost:8000/ServiceModelSamples/service/mex -->
        <endpoint address="mex"
                  binding="mexHttpBinding"
                  contract="IMetadataExchange" />
      </service>
    </services>

В вышеприведенном примере для всех первого, второго и mex-Endpoint невозможно было бы выяснить, какой "baseAddress" использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...