0

我创建了一个需要托管在窗口服务中的 WCF 服务,因为它参与了 P2P 网格 (NetPeerTcpBinding)。当我尝试在 IIS 服务容器中使用 NetPeerTcpBinding 端点托管 WCF 服务时,该服务将无法运行,因为事实证明 P2P 绑定在 IIS 中不起作用。

我已经从托管在 Windows 服务容器中的 WCF 服务公开了一个 HTTP 端点,我想知道是否有一种方法可以创建一个 ISA Web Farm,它将流量路由到两台机器上的 http 端点,每台机器都在一个运行相同的 WCF 服务Windows 服务容器。

4

1 回答 1

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

在 Windows 服务的配置文件中,为 DefaultDocumentService 连接一个单独的服务,并将其映射到其他 WCF 服务的根目录。当您将这些服务放入 ISA 上的 Web Farm 时,它将访问您的默认文档服务并获得“Hello!”。消息足以让 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>
于 2010-07-10T19:30:39.717 回答