我有一个包含10500个对象的列表。 当我试图把它放在缓存中时,这就成了一个例子。 然后我将列表对象数减少到9000,然后缓存工作正常。
那么有人可以告诉我如何将所有列表存储在缓存中吗?
下面的是我的web.config中的dataCacheClient:
<dataCacheClient requestTimeout="600000"
channelOpenTimeout="12000"
maxConnectionsToServer="1">
<hosts>
<host name="Platform.Almanhal.local" cachePort="22233" />
</hosts>
<transportProperties connectionBufferSize="131072"
maxBufferPoolSize="568435456"
maxBufferSize="183886080"
maxOutputDelay="2"
channelInitializationTimeout="60000" />
</dataCacheClient>
以下是我用来存储此列表的appfabric api:
public T Data<T>(string cacheKey, int expirationSeconds, Func<T> method)
{
T data = default(T);
try
{
string key = GetEncryptedKey(cacheKey);
var cache = GetFromCache(key);
data = cache == null ? default(T) : (T)cache;
if (data == null)
{
data = method();
if (expirationSeconds > 0 && data != null)
{
lock (sync)
{
PutInCache(key, data, TimeSpan.FromSeconds(expirationSeconds));
}
}
Logger.LogInfo(string.Format("{0} Loaded From DB", typeof(T).GetProperties()[2].PropertyType.Name));
}
else
{
Logger.LogInfo(string.Format("{0} Loaded From Cache", typeof(T).GetProperties()[2].PropertyType.Name));
}
}
catch (Exception ex)
{
Logger.LogInfo(ex.InnerException.Message);
}
return data;
}
PutInCache功能如下:
public void PutInCache(string key, object obj, TimeSpan tspan)
{
//TracingLibrary.TraceEvents.AddEvent("Inside Put in Cache");
try
{
_cache.Put(key, obj, tspan);
}
catch (Exception e)
{
string msg = e.InnerException.ToString();
Logger.LogInfo(string.Format("Cannot put object in cache {0}, \nException: {1} \nMessage:{2}", key, e.InnerException.ToNullOrString(), e.Message.ToNullOrString()));
//write to logger ("Exception putting in cache", e.InnerException);
}
}
这是一个例外信息:
ErrorCode:SubStatus:暂时失败。 请稍后重试。 (一个或多个指定的缓存服务器是 不可用,这可能是由繁忙的网络或服务器引起的。对于 内部部署缓存集群,还验证以下条件。 确保已为此客户端授予安全权限 帐户,并检查是否允许AppFabric缓存服务 通过所有缓存主机上的防火墙。还有MaxBufferSize server必须大于或等于序列化对象大小 从客户发送。)
答案 0 :(得分:0)
答案在错误消息中:
服务器上的MaxBufferSize 必须大于或等于 从客户端发送的序列化对象大小
您可以在群集配置的advancedProperties部分中设置它:
<advancedProperties>
<transportProperties maxBufferSize="183886080" />
</advancedProperties>