요청 필터에 나중에 서비스에서 액세스 할 수있는 사용자 지정 세션의 일부 속성을 설정하고 있습니다. 이것은 예상대로 작동합니다.서비스 외부에서 세션에 액세스하면 중복이 발생합니다.
요청 필터 : 내 서비스에서
public sealed class CustomAttribute:RequestFilterAttribute
{
public override void Execute(IRequest req, IResponse res, object requestDto)
{
var session = req.SessionAs<CustomSession>();
if (!session.FromToken)
{
throw new AuthenticationException("Please authenticate using bearer token or with flag 'UseTokenCookie' set to true.");
}
... do some work ...
session.X = tup.Item2;
session.Y = tup.Item1;
req.SaveSession(session);
}
}
는 :
var session = this.SessionAs<CustomSession>();
var myX = session.X;
var myY = session.Y;
... do some work ...
var someObj = new MyOtherClass();
someObj.DoSomeWork();
나중에 동일한 요청에, 나는이 동일한 속성에 액세스하려고하고 다른 세션을 반환했다.
public class MyOtherClass
{
...stuff...
public void DoSomeWork()
{
...
var req = HostContext.AppHost.TryGetCurrentRequest();
var session = req.SessionAs<CustomSession>(); //-> this returns a new session?
var myX = session.X; //-> so this is null
var myY = session.Y; //-> and this is null
}
}
내 질문에 대한 이유는 무엇입니까? 그것은 같은 요청입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
문맥에서 - JWT를 사용하고 있습니다. (4.5.6 현재) 'MyOtherClass'는 실제로 트랜잭션이 실패하거나 전자 메일 알림을 트리거 할 정도로 중요한 오류가 언제 발생하는지 결정하는 싱글 톤 오류 처리 클래스입니다.