Как разместить 2 сервиса WCF в 1 службе Windows?

Указатель NULL - это тот, который указывает на никуда. Когда вы разыскиваете указатель p, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p является нулевым указателем, местоположение, хранящееся в p, является nowhere, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception.

В общем, это потому, что что-то не было правильно инициализировано.

8
задан Craig Tyler 10 September 2008 в 15:33
поделиться

3 ответа

Основывайте свой сервис на эту статью MSDN и создайте два сервисных хоста. Но вместо того, чтобы на самом деле назвать каждый сервисный хост непосредственно, можно выломать его к стольким классам, сколько Вы хотите, который определяет каждый сервис, который Вы хотите выполнить:

internal class MyWCFService1
{
    internal static System.ServiceModel.ServiceHost serviceHost = null;

    internal static void StartService()
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
        }

        // Instantiate new ServiceHost.
        serviceHost = new System.ServiceModel.ServiceHost(typeof(MyService1));
        // Open myServiceHost.
        serviceHost.Open();
    }

    internal static void StopService()
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
            serviceHost = null;
        }
    }
};

В теле сервисного хоста окон назовите различные классы:

    // Start the Windows service.
    protected override void OnStart( string[] args )
    {
        // Call all the set up WCF services...
        MyWCFService1.StartService();
        //MyWCFService2.StartService();
        //MyWCFService3.StartService();


    }

Затем можно добавить столько сервисов WCF, сколько Вам нравится к одному сервисному хосту окон.

REMEBER для вызова методов остановки также....

11
ответ дан 5 December 2019 в 12:15
поделиться

Если Вы захотите, чтобы одна служба Windows запустила два сервиса WCF, то Вам будет нужен один ServiceInstaller, который имеет два экземпляра ServiceHost, оба из которых запускаются в (единственном) методе OnStart.

Вы могли бы хотеть следовать за шаблоном для ServiceInstaller, это находится в коде шаблона, когда Вы принимаете решение создать новую службу Windows в Visual Studio - в целом это - хорошее место для запуска.

1
ответ дан 5 December 2019 в 12:15
поделиться

Вам, вероятно, просто нужны 2 сервисных хоста.

_host1 и _host2.

0
ответ дан 5 December 2019 в 12:15
поделиться
Другие вопросы по тегам:

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