Я использую wcf 4 и пытаюсь прозрачно передавать контекстную информацию между клиентом и сервером.
Я смотрел на поведение и смог обойтись.Моя проблема заключается в том, как передать контекст, полученный во входящих заголовках, в другие сервисы, которые могут быть вызваны сервисом.
В поведении службы я перехватываю сообщение и читаю заголовки, но не знаю, куда поместить эти данные, чтобы они были доступны для следующего вызова службы, который может сделать текущая служба.
То, что я ищу, выглядит примерно так:
public void DoWork()
{
var someId = MyContext.SomeId;
//do something with it here and call another service
using(var proxy = GetProxy<IAnotherService>())
proxy.CallSomeOtherMethodThatShouldGetAccessTo_ MyContextualObject();
}
Если я храню заголовки в локальном хранилище потока, у меня могут возникнуть проблемы из-за гибкости потока (не уверен, что это происходит за пределами ASP.NET, то есть хостов пользовательских служб),Как бы вы реализовали MyContext
в коде выше.
Я выбрал MyContext вместо прямого доступа к заголовкам, потому что инициатор вызова службы может не быть службой, и в этом случае MyContext поддерживается HttpContext, например, для хранения.