gpt4 book ai didi

c# - 在 asp.net web 应用程序中使用静态字典

转载 作者:太空宇宙 更新时间:2023-11-03 20:47:44 24 4
gpt4 key购买 nike

我在我的 asp.net web 应用程序中使用 SignalR。 SignalR hub 中不存在 session 状态,因此我决定保存 username <-> connectionId在静态字典中配对。

public static class UsernameConnectionsMaps
{
private static Dictionary<string, string> data = new Dictionary<string, string>();

public static void Add(string username, string connectionId)
{
data[username] = connectionId;
}

public static string Get(string username)
{
return data[username];
}

public static void Remove(string username)
{
return data.Remove(username);
}
}

根据特定的 Controller 请求,我想使用 signalR 将数据发送到客户端。知道当前用户的用户名,我可以轻松获取客户端的 connectionId 并发送数据。

我使用 Get我的 Controller 中的方法。我用 AddRemove hub 中的方法 OnConnected()OnDisconnected()方法分别。

我感兴趣的是,此解决方案是否会在我的 Web 应用程序中出现有关线程安全(或其他)的任何问题?什么是更好的方法?

最佳答案

如果你使用静态字典,你将失去 scale out 的能力。你的 API。每个实例都会保留一个不同的静态字典,因此通知不会总是到达目的地,请考虑 azure signalr或某种持久性存储,如 Redis。

关于c# - 在 asp.net web 应用程序中使用静态字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164487/

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