【问题标题】:Where does TempData store its data?TempData 将其数据存储在哪里?
【发布时间】:2019-05-23 20:54:37
【问题描述】:

多年前有一个关于旧 ASP.NET 的similar question。我想知道 .NET Core 是否有所不同。

在链接的问题中,它指出 TempData 存储在 Session 中,默认情况下它绑定到单个服务器。所以要让它在服务器场上工作,我必须使用某种类型的状态服务器。

.NET Core 是否改变了这种行为以更好地支持网络农场?

【问题讨论】:

    标签: .net asp.net-core .net-core asp.net-core-2.2


    【解决方案1】:

    TempData 由 TempData 提供者使用 cookie 或会话状态来实现。 默认情况下,cookie 用于存储数据。但您可以选择使用基于会话的 TempData 提供程序。

    1) 如果您的系统已经使用会话,那么基于会话的 TempData 提供程序很容易使用。

    2)如果您的应用程序在多台服务器上的服务器场中运行? ,无需额外配置即可在数据保护之外使用 cookie TempData 提供程序。

    3)如果要在临时数据中存储少量数据,那么 cookie 是最好的选择。

    Cookie 名称:

    AspNetCore.Mvc.CookieTempDataProvider
    

    您可以配置cookie的名称如下:-

    services.Configure<CookieTempDataProviderOptions>(options => options.Cookie.Name = "MyTempDataCookie");
    

    您还可以编写 ITempDataProvider 的实现并注册它而不是默认的。

    【讨论】:

      【解决方案2】:

      在 ASP.NET Core 2.0 或更高版本中,基于 cookie 的 TempData 提供程序是 默认情况下用于将 TempData 存储在 cookie 中。

      来源:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/app-state?view=aspnetcore-2.2#tempdata

      【讨论】:

      • cookie 的名称是什么?我正在通过 Fiddler 查看有效载荷,但没有看到任何明显的东西。
      • @AngryHacker 只需将您的数据放入命名的 cookie 中,例如 - TempData["message"] = DateTime.Now;
      猜你喜欢
      • 2013-02-06
      • 2016-01-23
      • 2012-06-18
      • 2013-11-17
      • 2016-11-22
      • 1970-01-01
      • 2015-06-23
      • 2015-11-17
      • 1970-01-01
      相关资源
      最近更新 更多