Пример #1
0
 static void PrintMenu(ISessionKeyProvider sessionKeyProvider)
 {
     Console.Clear();
     Console.WriteLine($"Session Key: {sessionKeyProvider.SessionKey}");
     Console.WriteLine("C)   Change Session Key");
     Console.WriteLine("ESC) Close");
 }
        public static ISessionKeyProvider GetProvider()
        {
            ISessionKeyProvider provider = GetProviderByConfig() ?? GetProviderByRegister();

            if (provider == null)
            {
                throw new WebException("没有定义" + typeof(ISessionKeyProvider).FullName + "的实现");
            }
            return(provider);
        }
 /// <summary>
 /// 注册单例key提供器,请确保<paramref name="provider"/>是单例的
 /// </summary>
 /// <param name="provider"></param>
 public static void RegisterSessionKeyProvider(ISessionKeyProvider provider)
 {
     if (NotRegistered())
     {
         lock (_syncObject)
         {
             if (NotRegistered())
             {
                 _singletonProvider = provider;
             }
         }
     }
 }
 public static void RegisterSessionKeyProvider(Type providerType, bool isSingleton)
 {
     if (NotRegistered())
     {
         lock (_syncObject)
         {
             if (NotRegistered())
             {
                 if (isSingleton)
                 {
                     _singletonProvider = Activator.CreateInstance(providerType) as ISessionKeyProvider;
                 }
                 else
                 {
                     _providerType = providerType;
                 }
             }
         }
     }
 }
Пример #5
0
 public ApplySessionFilterHeader(ISessionKeyProvider sessionKeyProvider)
 {
     this.sessionKeyProvider = sessionKeyProvider;
 }
 public FilterIncomingMessages(ISessionKeyProvider sessionKeyProvider)
 {
     this.sessionKeyProvider = sessionKeyProvider;
 }
Пример #7
0
 /// <summary>
 /// 注册单例key提供器,请确保<paramref name="provider"/>是单例的
 /// </summary>
 /// <param name="provider"></param>
 public static void RegisterSessionKeyProvider(ISessionKeyProvider provider)
 {
     SessionKeyProvider.RegisterSessionKeyProvider(provider);
 }
Пример #8
0
    public static void ApplySessionFilter(this EndpointConfiguration endpointConfiguration, ISessionKeyProvider sessionKeyProvider)
    {
        var pipeline = endpointConfiguration.Pipeline;

        pipeline.Register(new ApplySessionFilterHeader(sessionKeyProvider), "Adds session key to outgoing messages");
        pipeline.Register(new FilterIncomingMessages(sessionKeyProvider), "Filters out messages that don't match the current session key");
    }