WCF REST .NET-приложение CallContext

У меня есть приложение WCF REST, работающее в IIS. Я использую.NET 4.6.2.

Я использую библиотеку, которая сохраняет информацию в CallContext будет использоваться позже на протяжении всего запроса. Метод должен быть вызван в global.asaxApplication_BeginRequest,

    public class Global : HttpApplication
    {
          /// <summary>
          /// Begins the application request.
          /// </summary>
          void Application_BeginRequest(object sender, EventArgs e)
          {                 
              CallContext.LogicalSetData("MyEntity", (object) entity);
          }
     }

Позже в моем контракте WCF REST, когда я вызываю библиотечный метод, который должен получить объект, который был сохранен в CallContext, это больше не доступно.

    [ServiceContract]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)]
    public partial class ServiceContract
    {
        [OperationContract]
        [WebGet(UriTemplate = "Test")]
        public string Test()
        {
            var entity = CallContext.LogicalGetData("MyEntity");    
           // entity is null here

           return "Test";
        }
     }

CallContext используется под капотом библиотекой, которую я должен использовать в своем приложении, поэтому я не могу изменить ее на HttpContext.Current.Items например, чтобы передать эти переменные. Есть ли причина, почему CallContext теряется при поступлении запроса в службу WCF? Если я попытаюсь получить это от Application_EndRequest, это все еще доступно.

void Application_EndRequest(object sender, EventArgs e)
{
    var entity = CallContext.LogicalGetData("MyEntity");    
    // entity is fine here
}

0 ответов

Другие вопросы по тегам