Не удается подключиться к службе WCF на моем локальном хостинге

#wcf #connect

#wcf #Контакты

Вопрос:

Я получил приведенную ниже ошибку при попытке подключиться к службе WCF, запущенной на моем локальном хостинге, с помощью инструмента WCF Test Client. Я ввел адрес конечной точки как «net.tcp: // localhost: 19998 /MyWCFService». MyWCFService запущен в Visual Studio 2017 на моем локальном компьютере.

«Не было никакой конечной точки, прослушивающей net.tcp:// localhost: 19998 / MyWCFService, которая могла бы принять сообщение. Это часто вызвано неправильным адресом или действием SOAP. Смотрите InnerException, если оно присутствует, для получения более подробной информации.»

Я могу проверить, что порт 19998 прослушивается на моем компьютере, используя netstat.

ПРОСЛУШИВАНИЕ TCP 0.0.0.0: 19998

Я отключил все брандмауэры на своем компьютере.

Ответ №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;
        }
    }
  

Результат.
введите описание изображения здесь

Не стесняйтесь, дайте мне знать, если я могу чем-нибудь помочь.