2017-04-04 4 views
1

Im Versuch, in speichern HttpContext.Session in Datenbank statt Server von memmoryAddDistributedSqlServerCache nicht Sitzung in Datenbank gespeichert

Problem ist, nichts in der Tabelle gespeichert und Sitzung wird immer null.

das ist mein Start Code:

public void ConfigureServices(IServiceCollection services) 
    { 
     services.AddMvc(); 
     services.AddDistributedSqlServerCache(options => 
     { 
      options.ConnectionString = @"Data Source=localhost;Initial Catalog=mydb;Integrated Security=True;"; 
      options.SchemaName = "dbo"; 
      options.TableName = "SQLSessions"; 
     }); 

     services.AddSession(options => { 
      options.CookieName = "Test.Session"; 
      options.IdleTimeout = TimeSpan.FromMinutes(60); 
     }); 

    } 


    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IDistributedCache cache) 
    { 
     loggerFactory.AddConsole(Configuration.GetSection("Logging")); 
     loggerFactory.AddDebug(); 

     if (env.IsDevelopment()) 
     { 
      app.UseDeveloperExceptionPage(); 
      app.UseDatabaseErrorPage(); 
      app.UseBrowserLink(); 
     } 
     else 
     { 
      app.UseExceptionHandler("/Home/Error"); 
     } 

     app.UseStaticFiles(); 

     app.UseSession(); 

     app.UseForwardedHeaders(new ForwardedHeadersOptions 
     { 
      ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto 
     }); 
     app.UseHttpMethodOverride(); 
     app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}" 
       ); 
      routes.MapRoute(
       name: "AdvertisementImages", 
       template: "{controller=Home}/{action=Images}/{type}/{name}", // URL with parameters 
       defaults: new {type = 0, name = ""} // Parameter defaults 
      ); 
     }); 

    } 

und mein Controller-Code für das Speichern von Sitzung:

HttpContext.Session.SetObjectAsJson("TryToLogin", newLogin); 

und meine Session-Erweiterung:

public static class SessionExtensions 
    { 
     public static void SetObjectAsJson(this ISession session, string key, object value) 
     { 
      session.SetString(key, JsonConvert.SerializeObject(value)); 
     } 

     public static T GetObjectFromJson<T>(this ISession session, string key) 
     { 
      var value = session.GetString(key); 

      return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value); 
     } 
    } 

und diese meine Session Tabelle Schema:

enter image description here

Antwort

Verwandte Themen