Как разместить пользовательские приложения (сервер) wcf на IIS7.5? - PullRequest
1 голос
/ 06 марта 2011

Я использовал пользовательское приложение wcf в качестве сервера wcf, используя:

ServiceHost<AlertService> alertServiceHost = new ServiceHost<AlertService>();
configuredEndpoints = alertServiceHost.Description.Endpoints;
alertServiceHost.Open();

Теперь у меня проблема с развертыванием в рабочей среде, а именно IIS7.5.

Понятия не имею, как развернуть на IIS. Потому что я знаю только, что мне нужно создать файл svc для размещения на IIS. Теперь у меня есть только консольное приложение, работающее как служба wcf.

Как я могу преобразовать его для развертывания в IIS?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

Если вы хотите использовать настраиваемый хост службы в сценарии размещения IIS, вам нужно указать настраиваемый ServiceHostFactory, который будет возвращать этот тип хоста службы, и настроить эту фабрику хостов службы в файле SVC.

По сути, ваша фабрика хостов настраиваемых служб должна происходить из ServiceHostFactory и переопределять один метод, который возвращает экземпляр хоста настраиваемой службы - что-то вроде:

public class MyOwnServiceHostFactory : ServiceHostFactory 
{ 
    protected override ServiceHost CreateServiceHost(Type t, Uri[] baseAddresses) 
    { 
        return new MyOwnCustomServiceHost(t, baseAddresses); 
    }

    public override ServiceHostBase CreateServiceHost(string service, Uri[] baseAddresses)
    {
         // The service parameter is ignored here because we know our service.
         ServiceHost serviceHost = new ServiceHost(typeof(HelloService), baseAddresses);
         return serviceHost;
    }
}

И в вашем SVC-файле вам теперь нужно:

<%@ ServiceHost Language="C#" Debug="true" 
        Service="YourNamespace.YourService" 
        Factory="YourNamespace.MyOwnServiceHostFactory" %> 

Подробнее о:

1 голос
/ 06 марта 2011

При размещении в IIS вы сами не создаете ServiceHost. Это ответственность IIS и причина, по которой существует файл .svc. Svc-файл инструктирует рабочий процесс, как и какая служба должна быть размещена.

Файл SVC состоит из простой директивы (разметки):

<%@ ServiceHost Language="C#" Debug="true" Service="MyNamespace.MyService" CodeBehind="MyService.svc.cs" %> 

Это пример размещения файлов .svc локально, создайте службу, но вы можете опустить атрибут CodeBehind и использовать полное описание типа в атрибуте Service для размещения класса обслуживания из другой сборки.

Также проверьте Как: разместить службу WCF в IIS .

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