C# 在云中跨计算机维护数据
我正在开发一个云托管的ZipFile创建服务 这是一个跨源WebApi2服务,用于从无法承载任何服务器端代码的文件系统提供ZipFile 基本操作如下所示:C# 在云中跨计算机维护数据,c#,cloud,persistence,C#,Cloud,Persistence,我正在开发一个云托管的ZipFile创建服务 这是一个跨源WebApi2服务,用于从无法承载任何服务器端代码的文件系统提供ZipFile 基本操作如下所示: 用户使用与文件位置相关的URL的字符串[]发出POST请求 WebApi将数组读入内存,并创建票证号 WebApi将票证号返回给用户 然后,AJAX回调将用户重定向到附加票证号的web地址,这将在HttpResponseMessage 为了处理票证系统,我的设计方法是建立一个全局字典,将随机生成的10位数字与列表值配对,并将字典与队列配
- 用户使用与文件位置相关的URL的
发出POST请求字符串[]
- WebApi将数组读入内存,并创建票证号
- WebApi将票证号返回给用户
- 然后,AJAX回调将用户重定向到附加票证号的web地址,这将在
HttpResponseMessage
列表
值配对,并将字典与队列
配对,一次存储10000个条目。([此处参考][1])
部分原因是WebApi不支持缓存
当我在本地调用AJAX时,它100%都能正常工作。当我远程打电话时,大约20%的时间都能正常工作
当它失败时,我得到的错误是:
字典中不存在给定的密钥。
也就是说,在全局字典对象中找不到票证号
我们(在Stack的帮助下)将问题追踪到云中的多个服务器。
在这种情况下,有三种
这并不意味着有三分之一的机会可以成功,现在的情况似乎是这样的:
- 当浏览器位于云站点时进行的调用在100%的时间内工作,因为同一台机器端到端地处理整个操作
- 从其他站点发出的调用的工作频率要低得多,因为接受AJAX调用的机器与随后重定向到网站下载文件的机器之间没有连续性。如果同一台机器同时处理这两个问题,那就很幸运了
这些机器是否有任何非数据库方式在所有会话中维护相同的
字典
,而不需要设置第四台机器来处理队列?如果您的ASP.NET web应用程序使用会话状态,您将需要配置外部会话状态提供程序(Redis缓存服务或SQL Server会话状态提供程序)
这里有一个循序渐进的指南。这就是字典只包含一个操作队列的原因吗 看来你要么需要: