繁体   English   中英

名称以“xxx”开头的 ASP.NET 搜索应用程序变量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM