4

是否可以有这样的 WCF 服务配置:

  <service behaviorConfiguration="WcfService1.Service1Behavior"
    name="WcfService1.Service1">
    <endpoint address="" binding="netTcpBinding" bindingConfiguration=""
      contract="WcfService1.IService1">
    </endpoint>
    <endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
      contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost/netTcpService" />
      </baseAddresses>
    </host>
  </service>

它是否托管在 Visual Studio 2008 附带的 ASP.NET 开发服务器上,还是我必须在 IIS 7 中托管该服务或在托管应用程序/Windows 服务中自行托管它?

感谢您的见解!

4

1 回答 1

11

IIS6 和内置的 Cassini Web 服务器都只支持 http,抱歉。

您必须在例如控制台应用程序中自行托管您的服务,或者在 IIS7 中托管它才能使用 NetTCP。

VS2008 SP1 还带有一个可用于这些目的的 WCF 测试主机应用程序,它还支持 NetTCP 和所有其他协议。

它被调用WcfSvcHost.exe并且应该在您的C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE目录中找到。您可以指定一个包含您的服务实现的 DLL 和它的配置文件,它会加载您的服务并为您托管它。

WcfSvcHost 的 MSDN 文档在这里:http:
//msdn.microsoft.com/en-us/library/bb552363.aspx

以下是它在您的环境中的样子:

替代文字

这是连接到该托管服务的 WcfTestClient.exe - 请注意 netTcp 端点:

替代文字

要在 Visual Studio 中进行设置,请使用 WCF 服务库项目的“属性”选项卡并选择WcfSvcHost.exe作为外部程序启动并提供正确的命令行参数,如下所示:

替代文字

现在,如果您按 F5 运行包含 WCF 服务的类库,它将启动测试主机并在其中托管您的服务库,准备好进行测试。

马克

于 2009-08-06T07:33:03.413 回答