私のリクエストフィルタで、後でサービスからアクセスするカスタムセッションでいくつかのプロパティを設定しています。これは期待どおりに動作します。サービス外のセッションにアクセスすると複製が作成される
リクエスト・フィルタ:私のサービスで
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'は実際にトランザクションが失敗するか電子メール通知をトリガーするのに十分な時間がかかるかを判断するシングルトーンエラー処理クラスです。あなたがHostContext.TryGetCurrentRequest()
を使用するときは、同じIRequest
インスタンスにアクセスしていない