2014-08-29 7 views
1

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

После создания всех функциональных возможностей 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 я добавил ссылку в WCF DLL в этой службе. Для этого щелкните правой кнопкой мыши по проекту в Solution Solution и выберите . Добавить ссылку. Чтобы добавить DLL в ссылку, выберите вкладку обзора в появившемся окне и перейдите к папке, в которой находится наша библиотека услуг WCF. В этом месте DLL можно найти внутри папки «bin \ Release».

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

The type or namespace name 'WcfServiceLibrary1' could not be found (are you missing a using directive or an assembly reference?)

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

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

Вышеупомянутая проблема разрешена теперь, следуя ответу 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

После того, как вы построили это dc wcf в каталоге bin вашего исполняемого файла? – Zeus82

+0

Попробуйте добавить ссылку на проект вашей библиотеки. – Reniuz

ответ

1

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

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

Способ исправить это, чтобы построить против проекта, а не DLL.

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

+0

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

+0

Вам нужно добавить файл 'application.config' в исполняемый проект службы и добавить конфигурацию, которая будет сгенерирована в вашей сборке' service.config' - конфигурация уровня сборки не загружается 'ConfigurationManager' во время выполнения - только исполняемая конфигурация. – toadflakz

Смежные вопросы