Hello HttpContextAccessor
This commit is contained in:
parent
282c50876b
commit
8487e42a68
|
|
@ -0,0 +1,10 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNet.Http
|
||||
{
|
||||
public interface IHttpContextAccessor
|
||||
{
|
||||
HttpContext HttpContext { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,47 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
#if DNX451
|
||||
using System.Runtime.Remoting.Messaging;
|
||||
using System.Runtime.Remoting;
|
||||
#elif DNXCORE50
|
||||
using System.Threading;
|
||||
#endif
|
||||
|
||||
namespace Microsoft.AspNet.Http.Internal
|
||||
{
|
||||
public class HttpContextAccessor : IHttpContextAccessor
|
||||
{
|
||||
#if DNX451
|
||||
private const string LogicalDataKey = "__HttpContext_Current__";
|
||||
|
||||
public HttpContext HttpContext
|
||||
{
|
||||
get
|
||||
{
|
||||
var handle = CallContext.LogicalGetData(LogicalDataKey) as ObjectHandle;
|
||||
return handle != null ? handle.Unwrap() as HttpContext : null;
|
||||
}
|
||||
set
|
||||
{
|
||||
CallContext.LogicalSetData(LogicalDataKey, new ObjectHandle(value));
|
||||
}
|
||||
}
|
||||
|
||||
#elif DNXCORE50
|
||||
private AsyncLocal<HttpContext> _httpContextCurrent = new AsyncLocal<HttpContext>();
|
||||
public HttpContext HttpContext
|
||||
{
|
||||
get
|
||||
{
|
||||
return _httpContextCurrent.Value;
|
||||
}
|
||||
set
|
||||
{
|
||||
_httpContextCurrent.Value = value;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue