4

我已经开始学习 WCF 并成功创建了一些测试 http 服务。现在,我正在尝试使用 net.pipe 绑定创建一个自托管的 WCF 服务。以下是该服务的配置文件:-

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
    <services>
        <service behaviorConfiguration="MEX" name="InProcService.MyService">
            <endpoint address="MyService"
                binding="netNamedPipeBinding" bindingConfiguration="" contract="InProcService.IMyService" />
            <endpoint address="Mex" binding="mexNamedPipeBinding"
                contract="IMetadataExchange" />
            <host>
                <baseAddresses>
                    <add baseAddress="net.pipe://localhost/InProcService/" />
                    <add baseAddress="http://localhost:8001/InProcService/" />
                </baseAddresses>
            </host>
        </service>
    </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="MEX"  >
        <serviceMetadata httpGetEnabled="true"/>
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>
</configuration>

现在在我的主机应用程序中,我正在使用以下方式启动服务:-

        ServiceHost host = new ServiceHost(typeof(MyService));
        host.Open();
        Console.WriteLine("Service started");

        host.Close();

执行此代码时服务正确启动。

现在,当在我的客户端应用程序中,我尝试将服务引用添加到这个正在运行的服务中,它无法找到它。有什么我没有做或做错的事情吗?

我会很感激我能得到的任何帮助。

干杯,阿比。

4

1 回答 1

2

该服务在此之后打开和关闭。当您启动客户端时,服务器已经关闭。所以 Console.ReadKey() is required 在关闭之前是必需的。

于 2011-08-03T06:48:20.283 回答