рдЕрдкрдиреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдкреНрд░рджрд╛рддрд╛ ASP.NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ Redis рд▓рд┐рдЦрдирд╛

рдЕрднрд┐рд╡рд╛рджрди

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рднрдВрдбрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ Redis рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рд░реЗрдбрд┐рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, Redis рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдкреНрд░рд╛рд░реВрдк (рдФрд░ рди рдХреЗрд╡рд▓) рдореЗрдВ рдПрдХ рдмрд╣реБрдд рддреЗрдЬрд╝ рднрдВрдбрд╛рд░рдг рд╣реИред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рд╣реИ рдФрд░ рдпрд╣ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬреЛ рд▓реЛрдЧ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рд╕реНрд░реЛрдд рдХреЛ рдПрдХ рд▓рд┐рдВрдХ рджреВрдВрдЧрд╛ред

рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ


рдореБрдЭреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рддреНрд░ рднрдВрдбрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереА:

1. рд╕рддреНрд░ рд▓рд┐рдЦрдиреЗ / рдкрдврд╝рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг
рдореИрдВ рдмрд╛рдж рдореЗрдВ рд╕рдордЭрд╛рдКрдВрдЧрд╛ рдХреНрдпреЛрдВред

2. рдЖрд╡реЗрджрди рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рдгред
рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЛ рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

3. рдЧрддрд┐ред
рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХреНрдпреЛрдВред

рддреНрдпрд╛рдЧ

рдореБрдЭреЗ рддреБрд░рдВрдд рдпрд╣ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХреЛрдб рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рд╕реНрдЯреЗрдЬ рдкрд░ рд╣реИ, рдореЗрд░реЗ рдЦрд╛рд▓реА рд╕рдордп рдореЗрдВ рд╕рд┐рд░реНрдл рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдЖрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдпрд╛ рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╡рд░реНрдгрд┐рдд рдПрдХ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдХрд╛ рднрд╛рд╡рд╛рддреНрдордХ рдЗрд░рд╛рджрд╛ рднреА рд╣реИ - рд╢рд╛рдпрдж рдХреЛрдИ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдХрдорд┐рдпреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░реЗрдЧрд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░реВрдВ :)

рдореИрдВ рдЦреБрдж рд▓рдЧрднрдЧ рджреЛ рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд░реЗрдбрд┐рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдХреБрдЫ рд╕реБрдзрд╛рд░ рдХрд░рдирд╛ рд╣реИ (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рд╕реБрдирдХрд░ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА)ред

Redis рд╕реНрдерд╛рдкрдирд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВрдиреЗ рд╡рд░реНрдЪреБрдЕрд▓рдмреЙрдХреНрд╕ рдкрд░ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдард╛рдпрд╛, рдФрд░ рдлрд┐рд░ рдпрд╣ рдХрдИ рдХрдорд╛рдВрдбреЛрдВ рдФрд░ рдХрдИ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдерд╛ (рдПрдХ рд╕реНрдерд┐рд░ рдЖрдИрдкреА рдХреЗ рд▓рд┐рдП рдФрд░ рд░реЗрдбрд┐рд╕ рдХреЛ рди рдХреЗрд╡рд▓ рд╕реНрдерд╛рдиреАрдпрд╣реЛрд╕реНрдЯ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ AppFabric рдХреИрд╢ рдЗрд╕рдХреЗ рд╕рддреНрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде, рд▓реЗрдХрд┐рди рдмрд┐рдВрджреБ 1 рдХреЗ рдХрд╛рд░рдг, рдЖрдкрдХреЛ рдЕрднреА рднреА рдЕрдкрдиреЗ рдкреНрд░рджрд╛рддрд╛ (рдХреЗрд╡рд▓ рдЕрдкрдиреА рдХреИрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ) рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЧрддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдпрд╣ рдореБрдЭреЗ Redis рд▓рдЧрддрд╛ рд╣реИред рддреЗрдЬ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рджрд╛рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ

рд╕рддреНрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдХреБрдВрдЬреА-рдореВрд▓реНрдп рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реИ, рдЗрд╕ рд╢рдмреНрджрдХреЛрд╢ рдХреЛ рдЕрдиреБрд░реЛрдз рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдиреБрд░реЛрдз рдХреЗ рдЕрдВрдд рдореЗрдВ рд░рд┐рдХреЙрд░реНрдб (рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ) рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрдИ рдЕрдиреБрд░реЛрдз рд╣реИрдВ рдЬреЛ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ , рдФрд░ рди рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЗрд╕рдореЗрдВ рдХреБрдЫ рдорд╛рди рднреА рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдорд╛рдирдХ рдкреНрд░рджрд╛рддрд╛рдУрдВ рдореЗрдВ, рдХреЗрд╡рд▓ 1 рдЕрдиреБрд░реЛрдз рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рддреНрд░ (рдЬреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдкреГрд╖реНрда рдкрд░ рдХрдИ рдмреНрд▓реЙрдХ рд╣реИрдВ рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ (AJAX) рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдФрд░ рд╕рднреА рдХреЛ рд╕рддреНрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рдкреНрд░рддреНрдпреЗрдХ рдмреНрд▓реЙрдХ рдЕрдкрдиреЗ рдЪрд░ рдмрджрд▓рддрд╛ рд╣реИ)ред рдХрд┐рд╕реА рднреА рдорд╛рдирдХ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд╕рд╛рде, рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╣рдореЗрдВ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИред

рд╕рддреНрд░ рд╕реНрдЯреЛрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ

2 рдореБрдЦреНрдп рдФрд░ 1 рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд░реНрдЧ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рддреНрд░ рдкреНрд░рджрд╛рддрд╛ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  1. RedisNoLockSessionStateStoreProvider SessionStateStoreProviderBase рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИред рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд╕рддреНрд░ (рдпрд╛рдиреА рдкреВрд░реЗ рд╕рдВрдЧреНрд░рд╣) рдХреЛ "рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ" рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ред рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдирдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдирд╛рдо рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реЗ рдЙрд▓рдЭрди рдореЗрдВ рдереЗ: GetItem, RemoveItem, ... рдирд╛рдореЛрдВ рд╕реЗ рдЖрдк рдпрд╣ рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рддреНрд░ рдореЗрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд░реНрдЧ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред

    рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рддреНрд░ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╡рд░реНрдЧ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд▓рдЧрднрдЧ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реИред
    Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    1. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    2. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    3. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    4. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    5. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    6. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    7. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    8. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    9. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    10. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    11. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    12. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    13. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    14. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    15. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    16. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    17. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    18. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    19. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    20. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    21. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    22. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }
    23. Copy Source | Copy HTML public class RedisNoLockSessionStateStoreProvider : SessionStateStoreProviderBase { //... public override SessionStateStoreData CreateNewStoreData(System.Web. HttpContext context, int timeout) { string sessionId = context.Request.Cookies[RedisNoLockSessionIDManager.CookieName].Value; return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (sessionId, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), timeout); } public override SessionStateStoreData GetItem(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { lockAge = TimeSpan .Zero; lockId = null ; locked = false ; actions = SessionStateActions .None; // RedisNoLockSessionStateItemsCollection return new SessionStateStoreData ( new RedisNoLockSessionStateItemsCollection (id, _defaultTimeout, _redisServer, _redisDb), SessionStateUtility.GetSessionStaticObjects(context), _defaultTimeout); } public override SessionStateStoreData GetItemExclusive(System.Web. HttpContext context, string id, out bool locked, out TimeSpan lockAge, out object lockId, out SessionStateActions actions) { return this .GetItem(context, id, out locked, out lockAge, out lockId, out actions); } //... }


  2. RedisNoLockSessionStateItemsCollection, рдЬреЛ ISessionStateItemCollection рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рд╡рд╣ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рд╕рддреНрд░ рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рд╡рд╣ рд▓рдЧрднрдЧ рд╕рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
    рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╡рд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИред

    Copy Source | Copy HTML
    1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ
    2. {
    3. // ...
    4. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд╕реНрддреБ рдпрд╣ [ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд╛рдо]
    5. {
    6. рдкреНрд░рд╛рдкреНрдд
    7. {
    8. string key = GetKey (рдирд╛рдо);
    9. рдЙрдкрдпреЛрдЧ ( var redis = SingleRedisPool.GetClient (_redisServer))
    10. {
    11. рд╡рд╛рдкрд╕реА redis.Get < рдСрдмреНрдЬреЗрдХреНрдЯ > (рдХреБрдВрдЬреА);
    12. }
    13. }
    14. рд╕реЗрдЯ
    15. {
    16. string key = GetKey (рдирд╛рдо);
    17. рдЙрдкрдпреЛрдЧ ( var redis = SingleRedisPool.GetClient (_redisServer))
    18. {
    19. рдмреВрд▓ рдкрд░рд┐рдгрд╛рдо = redis.Set < рдСрдмреНрдЬреЗрдХреНрдЯ > (рдХреБрдВрдЬреА, рдореВрд▓реНрдп );
    20. }
    21. }
    22. }
    23. // ...
    24. }


  3. рдЦреИрд░, рддреАрд╕рд░реА рд╢реНрд░реЗрдгреА RedisNoLockSessionIDManager рдЬреЛ рд╕рддреНрд░ рдЖрдИрдбреА рдФрд░ рдХреБрдХреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред
    Copy Source | Copy HTML
    1. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд░реНрдЧ RedisNoLockSessionIDManager : RedisSessionConfig , ISessionIDManager
    2. {
    3. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ CreateSessionID ( HttpContext рд╕рдВрджрд░реНрдн)
    4. {
    5. рд╡рд╛рдкрд╕реА рдЧрд╛рдЗрдб .NewGuid ()ред ToString ( "рдПрди" );
    6. }
    7. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ GetSessionID ( HttpContext рд╕рдВрджрд░реНрдн)
    8. {
    9. var рдХреБрдХреА = рд╕рдВрджрд░реНрднред Request.Cookies.Get (рдХреБрдХреА рдирд╛рдо);
    10. рдХреБрдХреА рд╡рд╛рдкрд╕ рд▓реМрдЯрд╛рдУ! = рдЕрд╢рдХреНрдд рдХреБрдХреА.рд╡рд╛рдпреБ: рдЕрд╢рдХреНрдд ;
    11. }
    12. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрд▓ рдЖрд░рдВрднрд┐рдХ рдЕрд╕рдорд╛рди ( HttpContext рд╕рдВрджрд░реНрдн, рдмреВрд▓ suppressAutoDetectRedirect, рдЖрдЙрдЯ рдмреВрд▓ supportSessionIDReissue)
    13. {
    14. supportSessionIDReissue = false ;
    15. рдЭреВрдареЗ рд▓реМрдЯрдирд╛ ;
    16. }
    17. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╢реВрдиреНрдп SaveSessionID ( HttpContext рд╕рдВрджрд░реНрдн, string id, out bool redirected, out bool cookieAdded)
    18. {
    19. HttpCookie рдХреБрдХреА = рдирдпрд╛ HttpCookie (рдХреБрдХреА рдирд╛рдо, рдЖрдИрдбреА);
    20. рдХреБрдХреА .Expires = DateTime .Now.Add (configuration.Timeout);
    21. рд╕рдиреНрджрд░реНрднред
    22. рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд = рдЭреВрда ;
    23. рдХреБрдХреАрдбреЗрдб = рд╕рдЪреНрдЪрд╛ ;
    24. }
    25. рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдмреВрд▓ рд╡реИрдз ( рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдИрдбреА)
    26. {
    27. рд╕рдЪ рд▓реМрдЯрдирд╛ ;
    28. }
    29. // редред
    30. }

рд╡рд╣ рд╕рдм рд╣реИред Web.config рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХреНрд╖рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рднрд╛рдЧ рд╕рддреНрд░ рдХреЗ рд▓рд┐рдП рдФрд╕рдд рджрд░реНрдЬреЗ рдХрд╛ рд╣реИ, рдЖрдк рдЗрд╕ рднрд╛рдЧ рдХреЛ рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╖реНрдХрд░реНрд╖

рдореИрдВ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ рдХреБрдЫ рдмрд╛рддреЗрдВ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдореБрдЭреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ рд╕реБрдирдХрд░ рдЦреБрд╢реА рд╣реЛрдЧреАред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

Source: https://habr.com/ru/post/In123812/


All Articles