【问题标题】:Fail to connect to WCF Service on my Localhost无法连接到我的本地主机上的 WCF 服务
【发布时间】:2019-08-29 03:21:21
【问题描述】:

尝试使用 WCF 测试客户端工具连接到在我的本地主机上运行的 WCF 服务时出现以下错误。我将端点地址输入为“net.tcp://localhost:19998/MyWCFService”。 MyWCFService 在我本地 PC 上的 Visual Studio 2017 中启动。

“net.tcp://localhost:19998/MyWCFService 上没有端点监听 可以接受消息。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。”

我可以使用 netstat 验证我的 PC 上的端口 19998 是否正在侦听。

TCP 0.0.0.0:19998 监听

我已禁用我电脑上的所有防火墙。

【问题讨论】:

    标签: wcf connect


    【解决方案1】:

    事实证明,我的 WCF 服务有一些运行时错误,禁止任何客户端连接到它。我已修复错误,现在可以连接。谢谢。

    【讨论】:

      【解决方案2】:

      似乎是服务地址错误造成的。您如何在服务器端托管服务?我希望您可以发布有关服务器端的更多详细信息,以便为您提供有效的答复。
      这是我使用 NetTCPBinding 的示例,希望对您有用。
      服务器

      class Program
          {
      
              static void Main(string[] args)
              {
      
                  Uri uri = new Uri("net.tcp://localhost:1500");
                  NetTcpBinding binding = new NetTcpBinding();
                  binding.Security.Mode = SecurityMode.None;
                  using (ServiceHost sh = new ServiceHost(typeof(Calculator), uri))
                  {
                  sh.AddServiceEndpoint(typeof(ICalculator), binding,"");
                  ServiceMetadataBehavior smb;
                  smb = sh.Description.Behaviors.Find<ServiceMetadataBehavior>();
                  if (smb == null)
                  {
                      smb = new ServiceMetadataBehavior();
                      //smb.HttpGetEnabled = true;
                      sh.Description.Behaviors.Add(smb);
                  }
                  Binding mexbinding = MetadataExchangeBindings.CreateMexTcpBinding();
                  sh.AddServiceEndpoint(typeof(IMetadataExchange), mexbinding, "MEX");
                  sh.Open();
                  Console.Write("Service is ready....");
                  Console.ReadLine();
                  sh.Close();
                  }
              }
          }
          [ServiceContract]
          public interface ICalculator
          {
              [OperationContract]
              int Test(int a);
      
          }
          public class Calculator : ICalculator
          {
              public int Test(int a)
              {
                  return a * 2;
              }
          }
      

      结果。

      如果有什么我可以帮忙的,请随时告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-14
        • 2019-09-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多