使用...
我尝试使用CacheManager的Couchbase配置来设置缓存层,但似乎正在打开大量连接,导致Web服务器上的短暂端口耗尽。
这是我的配置设置:
private static ICacheManager<object> dataCacheFactory { get; set; }
static CacheHelper()
{
var cacheConfig = new ConfigurationBuilder()
.WithCouchbaseCacheHandle("couchbaseClients/couchbase")
.WithExpiration(ExpirationMode.Sliding, new TimeSpan(0, 15, 0))
.Build();
dataCacheFactory = new BaseCacheManager<object>(cacheConfig);
}
我的Couchbase web.config设置:
<couchbaseClients>
<couchbase useSsl="false">
<servers>
<add uri="http://192.168.1.3:8091/pools" />
</servers>
<buckets>
<add name="default" useSsl="false" password="">
<connectionPool name="custom" maxSize="10" minSize="5" />
</add>
</buckets>
</couchbase>
</couchbaseClients>
当客户端被调用时:
public static TResult CacheHandler<TResult>(string key, Func<TResult> codeBlock)
{
var cache = dataCacheFactory;
object data = cache.Get(key);
if (data != null)
{
return (TResult)data;
}
else
{
var value = codeBlock();
try
{
cache.Put(key, value);
}
catch (Exception) { }
return value;
}
}
非常感谢任何指导!
编辑:我的本地计算机上的此代码没有问题,但是当站点部署在更高流量环境的IIS上时,以下Windows&#39;事件查看器中的事件:
由于所有此类端口都在使用,因此从全局TCP端口空间分配临时端口号的请求失败。
......和......
TCP / IP无法建立传出连接,因为最近使用所选本地端点连接到同一远程端点。当以高速率打开和关闭传出连接时,通常会发生此错误,从而导致使用所有可用的本地端口,并强制TCP / IP重用本地端口以进行传出连接。为了最大限度地降低数据损坏的风险,TCP / IP标准要求从给定本地端点到给定远程端点的连续连接之间经过最短时间。