Как я могу запустить конструктор службы WCF один раз для всех клиентов, если для InstanceContextMode установлено значение PerSession? - PullRequest
1 голос
/ 30 марта 2012

Как запустить код в конструкторе службы WCF только один раз, если для ServiceBehaviorAttribute.InstanceContextMode установлено значение PerSession?

[ServiceBehavior(
    InstanceContextMode = InstanceContextMode.PerSession, 
    ConcurrencyMode = ConcurrencyMode.Single)]
public class SomeService : ISomeService
{
    public SomeService()
    {
        this.RunThisOnceForAllClients();
    }

    private void RunThisOnceForAllClients() { }
}

Или как сделать так, чтобы метод запускался автоматически после запуска службы WCF, но он будет запускаться только один раз для всех клиентских вызовов ?

Пожалуйста, помогите. Заранее спасибо.


Я развертываю свою службу WCF с помощью Управляемой службы Windows . Мой код в C #. Фреймворк находится в .NET 4. Проект построен в Visual Stuido 2010 Professional. Служба используется приложением Windows Forms. Если вам интересно, почему мне нужно сделать это следующим образом, мне нужно выполнить метод Uploader , который загрузит базу данных службы в другую службу, но она будет выполнена в определенное время, поэтому я помещаю его в другой поток, который всегда будет работать, пока служба работает.

Ответы [ 3 ]

1 голос
/ 30 марта 2012

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

1 голос
/ 30 марта 2012

Вам необходимо написать поведение службы или поведение конечной точки. В этом случае вызовите функцию при первом вызове клиента и установите для переменной значение true и сохраните ее в некоторой постоянной памяти или в файле. Вы можете взглянуть на следующую статью msdn о расширении WCF

0 голосов
/ 24 мая 2013

Использовать статический конструктор? Он будет вызван один раз, когда (до) в вашем коде будет предпринято какое-либо действие с этим классом.

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