我们有AppFabric缓存集群服务器,我可以使用我的开发机器作为客户端来使用它。为了模拟访问缓存集群服务器的不同Web服务器,我创建了一个VMWare虚拟机并安装了Visual Studio 2010和我的Web应用程序。从VM作为客户端,当我尝试获取缓存时,我收到以下错误...请帮助..谢谢..
ErrorCode:SubStatus:暂时失败。请稍后重试。 (一个或多个指定的缓存服务器不可用,这可能是由繁忙的网络或服务器引起的。对于内部部署缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查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工作。我能够从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();
}
}
答案 0 :(得分:1)
服务器已拒绝客户端凭据。
只要将VM添加到与我的开发计算机相同的域中,就会解决此问题。