Exemple #1
0
        public sealed override async Task <object> GetInstanceAsync(ServerActionContext context, Type type)
        {
            IContractSession contractSession;

            if (context.Action == context.Contract.Session.InitSession)
            {
                contractSession = await _sessionFactory.CreateAsync(context.HttpContext, () => CreateInstance(context, type));

                context.ContractInstance = contractSession.Instance;
                context.HttpContext.Features.Set <IContractSession>(contractSession);

                await OnInstanceCreatedAsync(context, contractSession.SessionId);

                return(contractSession.Instance);
            }

            contractSession = await _sessionFactory.GetExistingAsync(context.HttpContext, () => CreateInstance(context, type));

            context.HttpContext.Features.Set <IContractSession>(contractSession);
            return(contractSession.Instance);
        }