Преобразование WebServiceHost в приложение службы WCF
У меня есть работающее консольное приложение, где все адреса и настройки находятся в файле конфигурации. Но когда я пытаюсь переместить этот код в приложение службы WCF, я получаю все виды ошибок.
class Program
{
static void Main(string[] args)
{
WebServiceHost host = new WebServiceHost(typeof(ImageService));
host.Open();
Console.WriteLine("Service up");
Console.ReadLine();
host.Close();
}
}
Проблема заключается в том, что приложение службы WCF запускается автоматически и не имеет основного метода, такого как консольное приложение. Как определить службу WCF для запуска WebServiceHost, когда основной метод не существует?
2 ответа
Я нашел очень простое решение этой проблемы. Чтобы указать WCF использовать вместо этого веб-сервис, все, что нужно, это добавить его в файл.svc.
Factory="System.ServiceModel.Activation.WebServiceHostFactory"
Каким-то образом я открыл этот файл в Visual Studio, поэтому перешел в папку проекта и открыл ее с помощью блокнота. Мой сервис.svc-файл выглядит так:
<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.Service1" CodeBehind="Service1.svc.cs" Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
Вы должны создать свой собственный сервис, наследуя от ServiceBase
учебный класс. Переопределить OnStart()
метод и откройте службу WCF в реализации. Переопределить OnStop()
метод и закройте службу WCF в реализации.