やりたいことを .NET Core 1.0 で再現するのは非常に困難です。SessionStart
およびSessionEnd
イベントは存在せず (また、それらを導入する予定はありません)、いくつかのトリックを使用してそれらを「複製」しようとすることしかできません。この非常に明確な記事で明確に指摘されているように、
ASP.NET Core 1.0 の背後にある原動力の 1 つは "クラウド対応" であるため、セッション管理の設計は分散シナリオで機能させることに重点が置かれてきました。Session_End は、セッションが inproc モード (ローカル サーバー メモリ) を使用し、チームがローカルでのみ動作する機能を追加しないと述べた場合にのみ発生しました。
ところで、セッションの使用に関する短い答え:
設定
次のエントリをproject.json
ファイルの依存関係ノードに追加します
"Microsoft.AspNet.Session": "1.0.0-rc1-final"
ConfigureServices を変更して、セッションをアクティブにします。
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(30);
options.CookieName = ".MyApplication";
});
}
次に、次のようにアクティブ化できます。
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseSession();
//removed for brevity
}
使用法
HttpContext.Session.SetString("Name, "Foo");
HttpContext.Session.SetInt32("Age", 35);
また
var name = HttpContext.Session.GetString("Name");
var age = HttpContext.Session.GetInt32("Age");