Служба Windows не работает

1

Я подготовил приложение с библиотекой сервиса WCF и службой Windows. Я выполнил весь процесс с помощью этой ссылки из проекта Code.

После создания всех функциональных возможностей WCF он был успешно создан, а также создал файл DLL WCF. Теперь я создал проект Windows Service внутри одного и того же решения Explorer для размещения DLL службы. Внутри метода OnStart я написал код ниже:

namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        ServiceHost sHost;
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            sHost = new ServiceHost(typeof(WcfServiceLibrary1.Service1));
            sHost.Open();
        }

        protected override void OnStop()
        {
            sHost.Close();
        }
    }
}

Для добавления WcfServiceLibrary1 я добавил ссылку на DLL-библиотеку WCF в этой службе. Для этого щелкните правой кнопкой мыши проект в обозревателе решений и выберите Добавить ссылку. Чтобы добавить DLL в ссылку, выберите вкладку обзора в появившемся окне и перейдите к папке, в которой находится наша библиотека услуг WCF. В этом месте DLL можно найти внутри папки "bin\Release".

После добавления ссылки он не дает никаких ошибок, но когда я собираюсь построить решение, он дает следующую ошибку:

Не удалось найти имя типа или пространства имен "WcfServiceLibrary1" (вам не хватает директивы using или ссылки на сборку?)

Я добавил ссылку еще раз, ошибка исчезла, а затем я снова построил решение. Появилось одно и то же сообщение об ошибке.

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

Вышеупомянутая проблема решена теперь, следуя ответу toadflakz. Теперь моя служба установлена правильно, но в OnStart появляется исключение .

Service cannot be started. System.InvalidOperationException: Service 'WcfServiceLibrary1.WCFService' has zero application (non-infrastructure) endpoints. This might be because no configuration file was found for your application, or because no service element matching the service name could be found in the configuration file, or because no endpoints were defined in the service element.
   at System.ServiceModel.Description.DispatcherBuilder.EnsureThereAreApplicationEndpoints(ServiceDescription description)
   at System.ServiceModel.Description.DispatcherBuilder.InitializeServiceHost(ServiceDescription description, ServiceHostBase serviceHost)
   at System.ServiceModel.ServiceHostBase.InitializeRuntime()
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(Object state)

Я пробовал много вариантов, и я действительно борюсь за это. Пожалуйста, помогите мне избавиться от этого, чтобы я мог успешно начать службу.

  • 0
    После сборки эта wcf dll находится в каталоге bin вашего исполняемого файла?
  • 0
    Попробуйте добавить ссылку на ваш проект библиотеки.
Теги:
wcf
service

1 ответ

1

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

Когда вы строите решение, все предыдущие выходы (включая библиотеки DLL) удаляются как часть этапа "Чистота сборки". Вот почему WcfServiceLibrary1.dll не удается найти при создании проекта службы Windows.

Способ исправить это - создать против проекта, а не DLL.

В Visual Studio: щелкните правой кнопкой мыши и выберите Добавить ссылку → Выбрать вкладку "Проекты" → Выбрать проект "WcfServiceLibrary1" → Нажмите "Добавить ссылку".

  • 0
    Большое спасибо. это сработало, но теперь столкнулось с другой проблемой. Я редактирую свой вопрос для этого. Пожалуйста, посмотрите, если вы можете помочь.
  • 0
    Вам необходимо добавить файл application.config в исполняемый проект службы и добавить в него конфигурацию, которая будет создана в файле service assembly.config - конфигурация уровня сборки не загружается ConfigurationManager во время выполнения - только исполняемая конфигурация.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню