以下のようなコードで、Homeアクションにリクエストすると、Indexビューでは"fuga"が表示される想定ですが、実際はなにも表示されません。

// Index.cshtml
<h2>@ViewData["Message"]</h2>

// Action
public IActionResult Index()
{
    var str = "";
    str = HttpContext.Session.GetString("msg");
    ViewData["Message"] = str;

    return View();
}

public IActionResult Home()
{
     HttpContext.Session.SetString("msg", "fuga");
     return Redirect("/Index");
}

Indexアクションを以下のようにすると、Indexビューで"fuga"が表示されるため、Sessionに値を格納することはできているという認識です。

public IActionResult Index()
{
    var str = "";
    HttpContext.Session.SetString("msg", "fuga");
    str = HttpContext.Session.GetString("msg");
    ViewData["Message"] = str;

    return View();
}

以上の状況から、Redirectするタイミングで、Sessionから保持していた値が消えているのではないかと推測していますが、具体的な原因と解決策が分かりません。
ご教授願えればと思います。

追記:
リダイレクトだけではなく、1回のリクエストを超えた値の保持ができていない状態でした。