AppFabric Cache - 远程主机强制关闭现有连接

时间:2010-05-13 20:28:12

标签: .net appfabric appfabric-beta-2

我正在尝试在我的本地开发环境中启动并运行AppFabric缓存。我安装了 Windows Server AppFabric Beta 2 Refresh ,并且已在Windows 7 64位上配置并开始运行缓存群集和主机。我在集成模式下在v4.0应用程序池下的本地IIS网站上运行我的MVC2网站。

HostName : CachePort      Service Name            Service Status Version Info
--------------------      ------------            -------------- ------------
SN-3TQHQL1:22233          AppFabricCachingService UP             1 [1,1][1,1]

我的web.config配置如下:

  <configSections>
        <section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/>
   </configSections>

   <dataCacheClient>
       <hosts>
           <host name="SN-3TQHQL1" cachePort="22233" />
       </hosts>
   </dataCacheClient>

当我尝试初始化DataCacheFactory时出现错误:

    protected CacheService()
    {
        _cacheFactory = new DataCacheFactory(); <-- Error here
        _defaultCache = _cacheFactory.GetDefaultCache();
    }

我正在使用以下内容获取ASP.NET黄色错误屏幕:

远程主机强行关闭现有连接

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.Net.Sockets.SocketException:远程主机强行关闭现有连接

来源错误:

Line 21:         protected CacheService()
Line 22:         {
Line 23:             _cacheFactory = new DataCacheFactory();
Line 24:             _defaultCache = _cacheFactory.GetDefaultCache();
Line 25:         }

3 个答案:

答案 0 :(得分:14)

我也有类似的问题,我的问题是我没有给缓存客户端提供适当的权限。为了快速验证这是问题,我会授予每个人帐户访问缓存的权限。如果这可以解决问题,那么请考虑限制对相应帐户的访问,而不是每个人。这可以通过“缓存管理器Windows PowerShell”执行以下命令,该命令位于Windows Server AppFabric开始菜单文件夹中:

Grant-CacheAllowedClientAccount everyone

答案 1 :(得分:2)

我也有这个问题,我在这个帖子中找到了答案:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/c27063e7-1579-4d62-9104-87076d1c8d98/client-caching-error-errorcodeerrca0017substatuses0006

答案:

  

由于安全属性不匹配,您看到此错误   在客户端和服务器之间。

     

在您的客户端代码中,您禁用了安全性(Mode = None和   PotectionLevel = None)而缓存服务器使用mode = Transport and   PotectionLevel = EncryptAndSign(默认为Beta2Fresh位)。

     

执行以下任一操作:

     

1)在客户端代码中使用默认安全性,即   configuration.SecurityProperties = new DataCacheSecurity();

     

2)禁用服务器上的安全性以与现有客户端匹配   码。使用Powershell cmdlet Set-CacheClusterSecurity -SecurityMode   无-ProtectionLevel无

答案 2 :(得分:1)

如果使用DataCacheFactoryConfiguration对象,是否会遇到同样的问题? e.g。

protected CacheService()
{
    DataCacheFactoryConfiguration config;
    List<DataCacheServerEndpoint> endpoints;
    DataCacheFactory factory;
    DataCache cache;

    endpoints = new List<DataCacheServerEndpoint>();
    endpoints.Add(new DataCacheServerEndpoint("SN-3TQHQL1",22233));

    config = new DataCacheFactoryConfiguration();
    config.Servers = endpoints;

    factory = new DataCacheFactory(config);

    cache = factory.GetDefaultCache();
    ...
}

您是否在防火墙上打开了端口?

也许检查事件日志中的条目 - 他们可能会提供有关(或不是)发生的线索。