我们有 AppFabric 缓存集群服务器,我可以使用我的开发机器作为客户端来使用它。为了模拟访问缓存集群服务器的不同 Web 服务器,我创建了一个 VMWare 虚拟机并安装了 Visual Studio 2010 和我的 Web 应用程序。从作为客户端的VM,当我尝试获取缓存时,出现以下错误...请帮助..谢谢..
错误代码:子状态:暂时失败。请稍后重试。(指定的一个或多个缓存服务器不可用,可能是由于网络或服务器繁忙。对于本地缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查 AppFabric所有缓存主机上的缓存服务都允许通过防火墙,而且服务器端的 MaxBufferSize 必须大于或等于客户端发送的序列化对象大小。)
我注意到内部异常是
服务器已拒绝客户端凭据。
所以..经过一些研究..我将以下行添加到我的配置中
<securityProperties mode="None" protectionLevel="None" />
所以现在,我的 dataCacheClient 配置如下所示:
<dataCacheClients>
<dataCacheClient name="default">
<localCache
isEnabled="true"
sync="NotificationBased"
objectCount="10000"
ttlValue="5" />
<hosts>
<host name="MyCacheClusterServerMachine" cachePort="22233" />
</hosts>
<securityProperties mode="None" protectionLevel="None" />
</dataCacheClient>
上述配置更改后..我收到以下错误:
套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时,或者是潜在的网络资源问题造成的。本地套接字超时为
我没有配置的代码如下。它在我的开发机器上作为客户端工作,而不是从虚拟机作为客户端工作。我能够从 VM 客户端 ping 缓存集群服务器。
class Program
{
static void Main(string[] args)
{
var config = new DataCacheFactoryConfiguration();
var servers = new List<DataCacheServerEndpoint>();
servers.Add(new DataCacheServerEndpoint("MyCacheClusterServerMachine", 22233));
config.Servers = servers;
var factory = new DataCacheFactory(config);
var cache = factory.GetDefaultCache(); <---- error here ********
var key = "CachedObjectKey";
var obj = cache[key];
if (obj == null)
{
obj = "here is a string to cache";
cache.Add(key, obj);
Console.WriteLine("object was not in cache");
}
obj = cache.Get(key);
Console.WriteLine(obj.ToString());
Console.ReadLine();
}
}