То, как решить “ChannelDispatcher, неспособно открыть его IChannelListener” ошибка?

Может быть миллион причин этого; используйте SQL Profiler и Запрос анализатор для определения , почему запросы становятся медленными перед потерей работоспособности по "дороге" изменения схемы. Не маловероятно, что все, что необходимо сделать, создают несколько индексов и расписания "статистика обновления"......, но как я сказал, Профилировщик и Query Analyzer являются лучшими инструментами для обнаружения, что продолжается...

12
задан kyrisu 9 August 2009 в 22:59
поделиться

3 ответа

Я решил это: D

Вот объяснение проблемы:

Первый BAD-код:

namespace WCFServer
{
    public class Program : IWCFService
    {
        private ServiceHost host;

        static void Main(string[] args)
        {
            new Program();
        }

        public Program()
        {
            host = new ServiceHost(typeof(Program));

            host.Open();

            Console.WriteLine("Server Started!");

            Console.ReadKey();
        }

        #region IWCFService Members

        public int CheckHealth(int id)
        {
            return (1);
        }

        #endregion
    }
}

Как вы можете видеть, контракт на обслуживание реализован в классе, в котором размещена служба. Это вызвало всю ошибку (возможно, typeof () запускает конструктор, я не знаю, что я открыт для конструктивного ввода в этом вопросе).

ХОРОШИЙ код:

namespace WCFServer
{
    public class Program
    {
        private ServiceHost host;

        static void Main(string[] args)
        {
            new Program();
        }

        public Program()
        {
            host = new ServiceHost(typeof(WCF));

            host.Open();

            Console.WriteLine("Server Started!");

            Console.ReadKey();
        }
    }

    public class WCF : IWCFService
    {

        #region IWCFService Members

        public int CheckHealth(int id)
        {
            return (1);
        }

        #endregion
    }
}

Контракт на обслуживание для обоих файлов:

[ServiceContract]
public interface IWCFService
{
    [OperationContract]
    int CheckHealth(int id);
}

App.config

<configuration>
<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior name="WCFBehavior" />
        </serviceBehaviors>
    </behaviors>
    <bindings>
        <netTcpBinding>
            <binding name="tcpBinding">
                <security>
                    <transport>
                        <extendedProtectionPolicy policyEnforcement="Never" />
                    </transport>
                </security>
            </binding>
        </netTcpBinding>
    </bindings>
    <services>
        <service name="WCFServer.WCF">
            <endpoint address="net.tcp://localhost:1111/TcpIHostMonitor" binding="netTcpBinding"
                bindingConfiguration="tcpBinding" name="netTcpEndpoint" contract="WCFServer.IWCFService" />
        </service>
    </services>
</system.serviceModel>

5
ответ дан 26 October 2019 в 10:45
поделиться

может быть, порт уже используется другой программой на вашем компьютере, например, антивирусной программой? Или это зарезервированный порт Windows. Не могли бы вы попробовать установить для порта что-то вроде 11111?

1
ответ дан 26 October 2019 в 10:45
поделиться

За исключением этого типа, именно внутреннее исключение содержит информацию, полезную для диагностики проблемы. Это довольно общая ошибка, которая может быть вызвана множеством разных вещей.

9
ответ дан 26 October 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: