Доступ к контексту OperationContext
В примере AccessingOperationContext показано, как можно использовать действия обмена сообщениями (ReceiveиSend) с пользовательским действием область для доступа Current к нему и присоединения или извлечения пользовательского заголовка сообщения в исходящем или входящего сообщения.
Что демонстрирует
Действия обмена сообщениями, ISendMessageCallback, IReceiveMessageCallback.
Обсуждение
В этом образце показано, как использовать точки расширяемости (ISendMessageCallback) IReceiveMessageCallback) в действиях обмена сообщения для доступа к Current. Обратные вызовы регистрируются в среде выполнения рабочего процесса в качестве реализации свойства IExecutionProperty, которое выбирается действиями обмена сообщениями после выполнения. Затрагиваются все действия обмена сообщениями в той же области, что и реализация IExecutionProperty. В частности, в этом образце используется действие пользовательской области для принудительного задания поведения обратного вызова. Он ISendMessageCallback используется в клиентском рабочем процессе для включения рабочего процесса Id в качестве исходящего MessageHeader. Затем этот заголовок выбирается в службе с помощью IReceiveMessageCallback, и значение заголовка выводится на консоли.
Настройка, сборка и запуск примера
В этом образце доступ к службе рабочего процесса предоставляется через конечные точки HTTP. Чтобы запустить этот пример, необходимо добавить правильные списки управления URL-адресами (см. инструкции по настройке HTTP и HTTPS), выполнив Visual Studio как Администратор istrator или выполнив следующую команду в командной строке с повышенными привилегиями, чтобы добавить соответствующие списки управления доступом. Убедитесь, что подставлены нужный домен и имя пользователя.
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
После добавления списков управления доступом по URL-адресу выполните следующие действия.
Постройте решение.
Задайте несколько проектов запуска, щелкнув решение правой кнопкой мыши и выбрав "Задать запускаемые проекты".
Добавьте службу и клиент (в этом порядке) в качестве нескольких проектов запуска.
Запустите приложение. На консоли клиента показан дважды выполняемый рабочий процесс, а в окне службы показаны идентификаторы экземпляров этих рабочих процессов.