首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Error - Etag冲突

Error - Etag冲突
EN

Stack Overflow用户
提问于 2019-03-12 10:14:17
回答 1查看 130关注 0票数 0

我试图在Microsoft框架工作中(在MemoryStorage环境中)将数据保存到.NET中。

我用这种方法来做这件事:

代码语言:javascript
复制
public static class StateManager
{
    private static MemoryStorage _myStorage;

    static StateManager()
    {
        _myStorage = new MemoryStorage();
    }

    public async static void Save(UserDetails userDetails)
    {

            var changes = new Dictionary<string, object>();
            {
                changes.Add("ud", userDetails);
            }
            await _myStorage.WriteAsync(changes, new CancellationToken());

    }
}

到现在为止,一切都很顺利。但突然间,我发现了一个错误:

System.Exception: Etag冲突。原文:4当前:5

知道如何解决这个错误吗?谢谢!

编辑-使用解决方案

我得到的问题是,我连续两次将数据推送到内存(没有在两次推送之间得到数据)。这意味着,在我一次推送数据之后,在再次推送数据之前,我必须从存储中获取数据。

我现在的问题是为什么?我不能保存数据两次没有得到数据之间的两次推送?

EN

回答 1

Stack Overflow用户

发布于 2019-03-12 21:57:06

如果没有更多的代码,我就无法复制您的问题。但是,听起来您有并发问题。

Save()方法返回一个void。相反,您应该使用:

public async static Task Save(UserDetails userDetails)

然后,在保存时,调用:

await StateManager.Save(userDetails)

但是,您可以省去这类事情的麻烦,并使用BotBuilder的内置状态存储。参考文献:

保存用户和会话数据

岩心Bot样本 --这是良好的用户配置文件存储的一个例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55118977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档