ホームページ  >  記事  >  バックエンド開発  >  Asp.netでSessionを使う方法を紹介します。

Asp.netでSessionを使う方法を紹介します。

Y2J
Y2Jオリジナル
2017-05-16 10:02:562048ブラウズ

Session は、ユーザーと Web アプリケーションのセッション状態を保存するためのメソッドです。この記事では、Asp.net Core でのセッションの使用方法を主に紹介します。

はじめに

2017 年は静かに始まりましたが、2017 年は私にとってもう一つの特に重要な年です。

私は、正月の休暇中に自宅で Asp.net Core のログイン認証コードを作成しました。1 つは、Asp.net Core での DLL の参照です。 DLL を直接参照しましたが、これは Core では不可能です。NuGet に基づいて追加するか、project.json に基づいて追加する必要があります。その後、VS の保存によりクラス ライブラリの復元が開始されます。 2 番目の問題は、Session を Core で使用するには、Session クラス ライブラリを追加する必要があります。

セッションを追加

NuGet に基づいてプロジェクトに追加します:

Microsoft.AspNetCore.Session

startup.cs を変更します

startup.cs でメソッド ConfigureServices(IServiceCollection services) を見つけて、Session を挿入します (この場所は Asp.net Core パイプラインです):

services.AddSession();

次に、 Asp.net Core がセッション データを保存するためにメモリを使用するようにするには、Configure(IApplicationBuilder app,...): app.UserSession();

Session

1 で HttpContext.Session

を使用します。コントローラー
using Microsoft.AspNetCore.Http;

public class HomeController:Controller
{
   public IActionResult Index()
   {
       HttpContext.Session.SetString("code","123456");
       return View(); 
    }

    public IActionResult About()
    {
       ViewBag.Code=HttpContext.Session.GetString("code");
       return View();
    }
}

2. コントローラー内にない場合は、IHttpContextAccessor

public class SomeOtherClass
{
   private readonly IHttpContextAccessor _httpContextAccessor;
   private ISession _session=> _httpContextAccessor.HttpContext.Session;

   public SomeOtherClass(IHttpContextAccessor httpContextAccessor)
   {
      _httpContextAccessor=httpContextAccessor;       
   }

   public void Set()
   {
     _session.SetString("code","123456");
   }
  
   public void Get()
  {
     string code = _session.GetString("code");
   }
}

を挿入して、複雑な

オブジェクト

を格納するときに、オブジェクト を json 文字列

にシリアル化して格納できます。

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);
  }
}
var myComplexObject = new MyClass();
HttpContext.Session.SetObjectAsJson("Test", myComplexObject);
var myComplexObject = HttpContext.Session.GetObjectFromJson<MyClass>("Test");
SQL Server または RedisStorage を使用します

1、SQL Server参照 "Microsoft.Extensions.Caching.SqlServer": "1.0.0" を追加します

Inject:

// Microsoft SQL Server implementation of IDistributedCache.
// Note that this would require setting up the session state database.
services.AddSqlServerCache(o =>
{
  o.ConnectionString = "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;";
  o.SchemaName = "dbo";
  o.TableName = "Sessions";
});

2、Redis

参照を追加 "Microsoft.Extensions.Caching.Redis": "1.0.0"

インジェクション:

// Redis implementation of IDistributedCache.
// This will override any previously registered IDistributedCache service.
services.AddSingleton<IDistributedCache, RedisCache>();

【関連推奨事項】

1.

特別な推奨事項

:

「php プログラマー ツールボックス」 V0.1 バージョンのダウンロード2. ASP の無料ビデオチュートリアル

3.

ASP リファレンスマニュアル

以上がAsp.netでSessionを使う方法を紹介します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。