powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
4 сообщений из 4, страница 1 из 1
Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
    #38942004
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет.

Как сервис WCF, хостящийся в IIS, может узнать что его закрывают/останавливают ?
Нужно отчистить ресурсы, а главное - не дать закрыть сервис до тех пор пока служба не будет готова к этому.

У Windows служб есть метод OnStop. И он, вроде бы, имеет около 30 секунд на зачистку, после чего SCM его прибьет.

В WCF тут сложнее. Мы имеем как Хост, так и саму реализацию сервиса (интерфейса службы). У Хоста есть события Closing, Faulted. Можно ли на них полагаться ? Но как из этих событий хоста, сообщить РЕАЛИЗАЦИИ сервиса, о том, что "нас прикрывают" ?

В общем. Что-то сложно получается.
Подскажите решение пожалуйста, может я что-то в упор пропустил.
...
Рейтинг: 0 / 0
Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
    #38943440
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никак ? )
...
Рейтинг: 0 / 0
Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
    #38943540
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
    #38943959
ProBiotek
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Winnipuh,

Спасибо. Собственно это решение я видел, и написал о нем в посте.
Но дело в том, что там речь идет об обработке OnClosing хоста. Хотелось бы, все же, обрабатывать это событие в самом сервисе (имплементации интерфейса).
Хост это хост. А имплементации сервиса это имплементация. И хост не должен заниматься делами сервиса. Он может лишь генерить некие события, а уж сервис может их обабатывать.
Первоначально обдумывая идею я пришел к идее ввести некий интерфейс IOnClosing с единственным одноименным методом.
Тогда, в кастомном хосте можно делать некую проверку:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
public class MyCustomServiceHost : ServiceHost
{
    private IOnClosing _instance;

    override protected ServiceHost(Type serviceType, params Uri[] baseAddresses)
    {
       .... код создания по типу....

       if (serviceType is IOnClosing)
          _instance = созданный инстанс
    }

    protected override void OnClosing()
    {
        // logic to save off your static data
        if (_instance != null)        
           _instance.Closing ()

        base.OnClosing();
    }
}



Но что-то нет уверенности в том, что это нормальный подход. В принципе я использую сервис в режиме Синглтона, должно быть меньше риска. Но все же есть сомнения, что подход чистый.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как узнать, что WCF службу закрывают/останавливает (в частности IIS) ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]