2010-03-23 4 views
0

Я создал службу WCF, которая должна быть размещена в службе Windows, потому что она участвует в сетке P2P (NetPeerTcpBinding). Когда я попытался разместить службу WCF с конечными точками NetPeerTcpBinding в контейнере службы IIS, служба не будет работать, потому что получается, что привязка P2P не работает в IIS.Служба веб-фермы ISA и WCF, размещенная в службе Windows с базовым HttpBinding

Я выставил конечную точку HTTP из службы WCF, размещенной в контейнере службы Windows, и я хочу знать, есть ли способ создать веб-ферму ISA, которая будет маршрутизировать трафик на конечные точки http на двух машинах, каждая из которых работает одинаково WCF в контейнере Windows Service.

+0

Почему в названии вашего вопроса указывается «basicHttpBinding», в то время как вы говорите, что у вас есть служба Windows, выставляющая «netPeerTcpBinding»? –

+0

Служба wcf имеет оба. Он участвует в сетке, используя один контракт и выставляя конечную точку basicHttpBinding, используя другой, гораздо более ограниченный контракт. –

ответ

0

Я понял, что это вышло из прошлого, извините, что потребовалось столько времени, чтобы получить ответ.

Создайте отдельный сервисный контракт под названием IDefaultDocumentService с помощью одного метода на нем, который украшен как OperationContract, так и WebGet.

<OperationContract(), WebGet()> 
Function GetDefaultDocument() As System.ServiceModel.Channels.Message 

Теперь реализовать этот контакт в очень простой DefaultDocumentService класса

Public Class DefaultDocumentService 
    Implements IDefaultDocumentService 

    Public Function GetDefaultDoc() As Message Implements IDefaultDocumentService.GetDefaultDocument 
     Return Message.CreateMessage(MessageVersion.None, "", "Hello!") 
    End Function 
End Class 

В конфигурационном файле для вас окна службы подключить отдельный сервис для DefaultDocumentService и отобразить его в корневую директорию вашего друга Служба WCF. Когда вы размещаете эти службы в веб-ферме на ISA, она попадет в вашу службу документов по умолчанию и получит «Привет!». сообщение, которое достаточно для того, чтобы сервер ISA знал, что служба активна.

<system.serviceModel> 
    <services> 
    <service name="YourMainService"> 
     <endpoint address="http://localhost:10000/YourMainService.svc" 
       binding="wsHttpBinding" 
       contract="IYourMainService" /> 
    </service> 

    <service name="DefaultDocumentService"> 
     <endpoint address="http://localhost:10000/" 
       binding="webHttpBinding" 
       behaviorConfiguration="DefaultDocumentEndpointBehavior" 
       contract="IDefaultDocumentService" /> 
    </service> 
    </services> 

    <behaviors> 
    <endpointBehaviors> 
     <behavior name="DefaultDocumentEndpointBehavior"> 
     <webHttp/> 
     </behavior> 
    </endpointBehaviors> 
    </behaviors> 
</system.serviceModel>