问题描述
我使用的 FluorineFX 似乎没有人再支持了,我将 iis 服务器会话状态从 inProc 切换到状态服务器(网络农场),一切正常,直到我将工作进程从 1 增加到 > 1。当我做系统的一个消息传递部分(RTMP)有问题。它似乎没有产生任何错误,但是消息似乎并没有在机器之间产生。
我有 FluorineFX 的来源,我相信我发现了问题。它似乎使用 System.Web.Caching.cache 来存储要发送给客户端的消息。虽然我还没有最终证明这是问题所在,但我相信当我切换到多个工作进程时,缓存不会在它们之间共享。
我的前端是 AIR。我有点不利,因为我用 VB 而不是 C# 编写我的中间层,而 FluorineFX 是用 C# 编写的。
我认为处理存储和检索数据的 FluorineFX 中的代码似乎是;
using System.Web.Caching;
using FluorineFx.Collections;
namespace FluorineFx.Context
{
class ApplicationState : IApplicationState
{
IResource _resource;
public ApplicationState()
{
_resource = new FileSystemResource("~/Web.config");
if (_resource == null || !_resource.Exists)
_resource = new FileSystemResource("~/web.config");
}
#region IApplicationState Members
public object this[string name]
{
get
{
return httpruntime.cache[name];
}
set
{
Add(name,value);
}
}
public void Remove(string key)
{
httpruntime.cache.Remove(key);
}
public void Add(string name,object value)
{
//Cache can be cleared by touching Web.config
if (_resource != null && _resource.Exists)
{
CacheDependency cacheDependency = new CacheDependency(_resource.File.FullName);
httpruntime.cache.Insert(name,value,cacheDependency,DateTime.Now.AddYears(1),TimeSpan.Zero,CacheItemPriority.NotRemovable,null);
return;
}
}
/// <summary>
/// Locks access to an IApplicationState variable to facilitate access synchronization.
/// </summary>
public void Lock()
{
//System.Web.Caching.Cache is thread-safe
}
/// <summary>
/// Unlocks access to an IApplicationState variable to facilitate access synchronization.
/// </summary>
public void UnLock()
{
//System.Web.Caching.Cache is thread-safe
}
#endregion
#region IEnumerable Members
public IEnumerator GetEnumerator()
{
return httpruntime.cache.GetEnumerator();
}
#endregion
}
}
web.config 或 IIS 中的配置更改是否会导致缓存在工作进程之间共享?
或者是否有其他原因可能导致这些症状?
编辑:
我想第一个问题是,“缓存存储在哪里?”我想它会与应用程序变量保存在同一个地方,我认为是会话状态服务器。
不知道 System.Web.Caching.cache,我的应用程序使用应用程序变量来缓存数据。存储在那里的数据适用于单个或多个工作进程。
下一个问题是“我可以将此代码切换为使用 ASP.NET '应用程序变量'吗?”
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)