2013-04-19 12 views
0

Я создал службу WCF для размещения в IIS. Я использую метод ServiceHostFactory для размещения моего сервиса (используя Unity как DI).Хост службы WCF с использованием ServiceHostFactory с множественным связыванием

Я хочу разместить свою службу, используя множественную привязку, через HTTP, а также через TCP.

Я попробовал предоставить базовый адрес, но его не берут. все еще давая мне ошибку как Сервис, зарегистрированный по схеме HTTP.

Ниже фрагмент кода может дать вам и идею.

public class MyServiceHostFactory : ServiceHostFactory 
{ 
    protected override ServiceHost CreateServiceHost(
           Type serviceType, Uri[] baseAddresses) 
    { 
     MyServiceHost serviceHost = new MyServiceHost(serviceType, baseAddresses); 

     //configure container 
     MyFactory.Register(); 

     return serviceHost; 
    } 
} 

Файл конфигурации:

<system.serviceModel>  
<services> 
    <service name="My.Service.MyService"> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:9000/MyService/"/> 
     <add baseAddress="net.tcp://localhost:9001/MyService/"/> 
     </baseAddresses> 
    </host> 
    <endpoint address="Question" binding="basicHttpBinding" contract="My.Contract.IQuestionContract" /> 
    <endpoint address="Answer" binding="basicHttpBinding" contract="My.Contract.IAnswerContract" /> 
    <endpoint address="Question" binding="netTcpBinding" contract="My.Contract.IQuestionContract" /> 
    <endpoint address="Answer" binding="netTcpBinding" contract="My.Contract.IAnswerContract" /> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyServicebehavior"> 
     <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="True"> 
</serviceHostingEnvironment> 

Может кто-нибудь предложить мне, что можно сделать?

Главное, Возможно ли размещать услуги с использованием ServiceHostFactory с несколькими связями?

Если да, может ли кто-нибудь мне помочь?

ответ

0

Я попытался бы удалить базовый адрес net.tcp и указать полный адрес на конечной точке.

+0

Я попытался дать полный адрес в привязке, он не работает. «Нет привязки протокола к указанному адресу» net.tcp: // localhost: 9001/MyService/Question '. " –

+0

Вы также попытались удалить базовый адрес? – evgenyl

+0

Да. Я также удалил базовый адрес. –