Как можно внедрить шаги инициализации в службу рабочего процесса?

Я пишу службу WF4, и мне нужно выполнить некоторую инициализацию (например, инициализацию log4net). В обычном сервисе я бы просто изменил global.asax, но в сервисе WF4 такого файла нет. Где же тогда разместить эту инициализацию?

Это должен быть простой вопрос, но я пока не могу найти ответов здесь, на SO или где-либо еще. Вздох.


person Tevya    schedule 15.01.2015    source источник


Ответы (1)


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

Для более сложных сценариев вы можете взглянуть на System.ServiceModel.Activities.Activation.WorkflowServiceHostFactory.

Сообщение в блоге с примером использования можно найти здесь: http://blogs.msdn.com/b/endpoint/archive/2011/04/27/how-to-create-a-wf4-workflowservicehostfactory.-for-appfabric-auto-start.aspx

person nodots    schedule 11.04.2015
comment
Да, я сам нашел этот ответ пару месяцев назад. Одно предостережение: если в рабочем процессе используются выражения C#, переопределение WorkflowServiceHostFactory потребует предварительной компиляции выражений C# (см. msdn.microsoft.com/en-us/library/jj591618%28v=vs.110%29.aspx). Если вы этого не сделаете, вы получите очень бесполезное, запутанное сообщение об ошибке. - person Tevya; 14.04.2015