我正在尝试在我的本地开发环境中启动并运行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: }
答案 0 :(得分:14)
我也有类似的问题,我的问题是我没有给缓存客户端提供适当的权限。为了快速验证这是问题,我会授予每个人帐户访问缓存的权限。如果这可以解决问题,那么请考虑限制对相应帐户的访问,而不是每个人。这可以通过“缓存管理器Windows PowerShell”执行以下命令,该命令位于Windows Server AppFabric开始菜单文件夹中:
Grant-CacheAllowedClientAccount everyone
答案 1 :(得分:2)
我也有这个问题,我在这个帖子中找到了答案:
答案:
由于安全属性不匹配,您看到此错误 在客户端和服务器之间。
在您的客户端代码中,您禁用了安全性(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();
...
}
您是否在防火墙上打开了端口?
也许检查事件日志中的条目 - 他们可能会提供有关(或不是)发生的线索。