无法从其他计算机访问托管Windows服务中托管的WCF服务

时间:2013-04-10 14:41:08

标签: wcf service

我根据this手册开发了托管Windows服务中托管的WCF服务。在App.config中,我指定了以下内容:

 <service name="Inpas.Unipos.LicenseManager.SamService.Service"
           behaviorConfiguration="SamServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/SamService/service"/>
      </baseAddresses>
    </host>
    <endpoint address=""
              binding="wsHttpBinding"
              contract="Inpas.Unipos.LicenseManager.SamService.IService" />
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>

在客户端,我以这种方式连接到服务:

public void ConnectToService(string host, string port)
{
    var binding = new WSHttpBinding();
    var endpoint = new EndpointAddress(string.Format("http://{0}:{1}/SamService/service", host, port));
    var channelFactory = new ChannelFactory<IService>(binding, endpoint);
    _client = channelFactory.CreateChannel();
    _client.Get2X2();
}

在本地计算机中它工作正常,但如果我尝试从另一台计算机连接到服务 - 我得到一个例外:

EndpointNotFoundException 消息:http://10.xx.xx.xx:8000/SamService/service没有可以接受该消息的端点监听。这通常是由不正确的地址或SOAP操作引起的。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

我通过打开服务的入站端口修复了它:

  • 单击“开始”按钮,然后单击“控制面板”,打开“Windows防火墙”。在搜索框中,键入firewall,然后单击“Windows防火墙”。
  • 在左侧窗格中,单击“高级设置”。如果系统提示您输入管理员密码或进行确认,请键入密码或提供确认。
  • 在“具有高级安全性的Windows防火墙”对话框的左窗格中,单击“入站规则”,然后在右窗格中单击“新建规则”。
  • 按照新建入站规则向导中的说明操作(在此向导的“协议和端口”步骤中选择Tcp)。