gpt4 book ai didi

c# - 在 ASP.NET Core 3.1 中创建 session

转载 作者:行者123 更新时间:2023-12-04 00:01:31 25 4
gpt4 key购买 nike

我正在使用 ASP.NET Core 3.1。
我需要在 Controller 的操作中设置 session 。我在 ConfigureServices() 方法中添加了 session :

services.AddSession(options => {
options.IdleTimeout = System.TimeSpan.FromSeconds(3600);
});

我还添加了在 Configure() 方法中使用 session 的代码:
app.UseSession();

在 Controller 类中,我试图创建一个 session
HttpContext.Session.Set("sessionuser",xxx);

所需的 xxx 是一个字节 [],与 .NET CORE 2.2 中 SetString() 所需的字符串不同
如何为此创建字节 []?在创建 session 中有其他更好的选择吗?

最佳答案

GetString/SetString .NET Core 3.1 中仍然存在。它们是扩展(一如既往)并且位于 Microsoft.AspNetCore.Http 中。命名空间。也许你只需要添加一个 using ?

您没有在此处提供大量有关您的情况的信息,但您可能正在从类库中执行此操作。在这种情况下,事情变得有点棘手。 ASP.NET Core 3.X 转向对大部分 ASP.NET Core 代码使用框架引用(而不是对 Microsoft.AspNetCore.App 元包的包引用。但是,该框架引用只能在定位 netcoreapp3.0 时使用。或更高版本。如果您的目标是 .NET Standard,则只能引用旧的 2.X 包。

如果您只支持 ASP.NET Core 3.X 应用程序,那么您只需将类库的目标更改为 netcoreapp3.1并添加框架引用。如果您还需要支持 ASP.NET Core 2.X 应用程序,那么您必须将您的类库多目标到两个 netcoreapp3.1netstandard2.0 ,并在您的项目文件中使用条件来根据目标添加框架引用或单独的 2.X 包。 Andrew Lock 有一个很好的指南和更多信息:https://andrewlock.net/converting-a-netstandard-2-library-to-netcore-3/

还值得一提的是System.Text.Json支持直接序列化到/从 byte[] .因此,如果您已经在使用或打算使用 ISession 的泛型类型扩展。要支持比简单字符串更复杂的类型或可以强制转换为字符串的值类型,那么您可以只依赖它:

public static class SessionExtensions
{
public static void Set<T>(this ISession session, string key, T value)
{
session.Set(key, JsonSerializer.SerializeToUtf8Bytes(value));
}

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

return value == null ? default(T) :
JsonSerializer.Deserialize<T>(value);
}
}

关于c# - 在 ASP.NET Core 3.1 中创建 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60493346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com