【问题标题】:WCF error "there was no endpoint listening at ..."WCF 错误“没有端点正在监听...”
【发布时间】:2015-03-04 05:00:56
【问题描述】:

我正在创建我的第一个 WCF 应用程序。当它们在同一台计算机上时,客户端可以与主机通信,但从 LAN 上的其他计算机失败。两者都是控制台应用程序。

这是我的代码和配置。

客户端配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <system.serviceModel>
      <bindings>
         <wsHttpBinding>
            <binding name="WSHttpBinding_ICalculator" />
         </wsHttpBinding>
      </bindings>
      <client>
         <endpoint name="WSHttpBinding_ICalculator"
             address="http://192.168.100.6:8000/ServiceModelSamples/Service/CalculatorService"
             binding="wsHttpBinding" 
             bindingConfiguration="WSHttpBinding_ICalculator"
             contract="ServiceReference1.ICalculator">
             <identity>
                <userPrincipalName value="saumitra\skpaul" />
             </identity>
         </endpoint>
      </client>
   </system.serviceModel>
</configuration>

主机代码:

class Program
{
    static void Main(string[] args)
    {
        // Step 1 Create a URI to serve as the base address.
        Uri baseAddress = new Uri("http://Localhost:8000/ServiceModelSamples/Service");

        // Step 2 Create a ServiceHost instance
        ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), baseAddress);

        try
        {
            // Step 3 Add a service endpoint.
            selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService");

            // Step 4 Enable metadata exchange.
            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            selfHost.Description.Behaviors.Add(smb);

            // Step 5 Start the service.
            selfHost.Open();
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Press <ENTER> to terminate service.");
            Console.WriteLine();
            Console.ReadLine();

            // Close the ServiceHostBase to shutdown the service.
            selfHost.Close();
        }
        catch (CommunicationException ce)
        {
            Console.WriteLine("An exception occurred: {0}", ce.Message);
            selfHost.Abort();
        }
    }
}

【问题讨论】:

  • 这听起来像是……防火墙人的工作:-)
  • 知道如何解决吗?
  • 是的,更改防火墙规则以允许传入会话到特定端口。但这并不是一个真正的编程问题,而是应该在 ServerFault 上结束的问题。你会在那里得到“更好”的答案。
  • 当您尝试从客户端浏览192.168.100.6:8000/ServiceModelSamples/Service/… 时会发生什么?
  • @Amit 它说“网页不可用”

标签: c# wcf


【解决方案1】:

你可以从this post得到一个想法

您也可以使用套接字编程。 Here 是一个非常好的多客户端、双向通信套接字编程示例。

【讨论】:

  • 非常感谢。这些文章真的很有帮助。
【解决方案2】:

首先确保从客户端使用的地址是服务器的正确位置。您的代码目前被硬编码到目的地...

<endpoint address="http://192.168.100.6:8000/

...但是服务器实际上是在 192.168.100.6 上运行的吗?

【讨论】:

猜你喜欢
  • 2011-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多