[英]ASP.NET search application variables whose name starts with "xxx"
我正在创建一个基于 ASP.NET 的回合游戏站点,其中一些玩家可以开始游戏,而其他玩家只需加入该游戏。
为了管理每个游戏,我将创建一个带有设置前缀的应用程序级别变量,比如“game_”。 并且每款游戏都会带有一个随机的游戏ID。
所以会有一堆变量,比如game_1234、game_56789、game_nnnn……
问题是:如何检索所有game_*变量以查看其内容并执行更改/删除其中一些?
编辑:变量与此代码一起存储,其中游戏 ID 已随机设置:
HttpContext.Current.Application("game_" & gameID) = some_value
如果您要问如何查询和操作HttpContext.Current.Application
HttpApplicationState 中的值,您可以执行以下操作:
foreach (var gameKey in HttpContext.Current.Application.AllKeys.Where(k => k.StartsWith("game_")
{
var gameObject = HttpContext.Current.Application.Get(gameKey);
//Do some work on gameObject
}
但是,我建议不要将数据保存在HttpContext.Current.Application
。 如果您的应用程序池回收,它将丢失,如果您想添加另一台服务器,您将遇到问题。 如果这不仅仅是一个原型,您可能想尝试像redis这样的工具。
此外,最好将其抽象出来,例如:
公共静态类 GameSessionService { 私有静态只读 ConcurrentDictionary _games = new ConcurrentDictionary();
public static string CreateNewGame()
{
var gameId = "Game_" + Guid.NewGuid();
var newGame = new object();
_games.AddOrUpdate(gameId, k => newGame, (k,v) => newGame);
return gameId;
}
public static IEnumerable<object> GetAllGames()
{
return _games.Values;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.