获取访问被拒绝尝试从powershell启动appfabric缓存集群

时间:2011-09-07 19:54:12

标签: powershell appfabric

我有一些使用appfabric的代码,并且导致服务器不可用错误。按照http://msdn.microsoft.com/en-us/library/ff921031.aspx的说明,我发现我的缓存群集已关闭。我以管理员身份打开了PowerShell并运行了Start-CacheCluster。几分钟后,我收到一条错误消息:

Start-CacheCluster : Could not start cluster: ErrorCode<ERRCAdmin025>:SubStatus
<ES0001>:Time-out occurred in starting the cluster.
At line:1 char:19
+ Start-CacheCluster <<<<
    + CategoryInfo          : NotSpecified: (:) [Start-CacheCluster], DataCach
   eException
    + FullyQualifiedErrorId : ERRCAdmin025,Microsoft.ApplicationServer.Caching
   .Commands.StartCacheClusterCommand

检查事件日志会显示:

Service cannot be started. System.TypeInitializationException: The type initializer for 'Microsoft.ApplicationServer.Caching.ConfigManager' threw an exception. ---> System.TypeInitializationException: The type initializer for 'Microsoft.Fabric.Common.ConsoleSink' threw an exception. ---> System.Configuration.ConfigurationErrorsException: Configuration system failed to initialize ---> System.Configuration.ConfigurationErrorsException: An error occurred loading a configuration file: Access to the path 'C:\Windows\System32\AppFabric\DistributedCacheService.exe.config' is denied. (C:\Windows\System32\AppFabric\DistributedCacheService.exe.config) ---> System.UnauthorizedAccessException: Access to the path 'C:\Windows\System32\AppFabric\DistributedCacheService.exe.config' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBU...

有没有更多有AppFabric经验的人看过这个?

-Thanks

6 个答案:

答案 0 :(得分:9)

尝试MicrosoftWindowsApplication Server-System ServicesAdmin日志。有时,此日志会为您提供常规事件日志中不存在的更多信息。有关缓存群集监视的详细信息,请参阅Health Monitoring Tools

关于你的问题。我唯一想到的是,在启动缓存集群后,它会加载配置,因为它会失败,最终会导致AppFabric缓存服务崩溃(您将在上面提到的事件日志中看到这些信息)。

确保将AppFabric缓存服务配置为在有权访问配置文件DistributedCacheService.exe.config的帐户以及配置存储库(Velocity配置数据库或配置XML)下运行。

答案 1 :(得分:4)

您需要以管理员身份运行“缓存管理Windows PowerShell”。

答案 2 :(得分:3)

您是否检查过 AppFabricCachingService 登录是否具有 DistributedCacheService.exe.config 的读取权限?

就我而言,我使用的是XML提供程序,并且有一个名为“CacheConfig”的配置共享。我的服务器未加入域,因此我为缓存主机配置了本地“AppFabric”用户。我使用PowerShell编写配置脚本:

Register-CacheHost -Provider XML -ConnectionString "\\MY-HOST\CacheConfig" -Account "AppFabric" -CachePort 22233 -ClusterPort 22234  -ArbitrationPort 22235 -ReplicationPort 22236 -HostName MY-HOST
Add-CacheHost -Provider XML -ConnectionString "\\MY-HOST\CacheConfig" -Account "AppFabric"
#...
Start-CacheCluster
#...

当我运行脚本时,Start-CacheCluster语句失败并出现与您的问题相同的拒绝访问错误。然后,我检查了 AppFabricCachingService 登录,发现它已设置为 NETWORK SERVICE 。当我检查 C:\ Windows \ System32 \ AppFabric \ DistributedCacheService.exe.config 上的文件权限时,我发现AppFabric用户有读取权限,但没有 NETWORK的权限SERVICE 即可。这向我表明 Register-CacheHost Add-CacheHost 小程序假定缓存主机帐户和服务帐户是相同的。

在我的情况下,我为 NETWORK SERVICE 添加了文件的读取权限,并修复了问题。

答案 3 :(得分:0)

答案 4 :(得分:0)

我也遇到了问题,因为我的AppFabric服务器遭遇了一些未知的事情。我花了很多时间来寻找解决方案。最后,我成功尝试的唯一方法是卸载/重新安装AppFabric。并再次配置设置。希望这有帮助!

答案 5 :(得分:0)

我有同样的问题,因为我安装了appfabric缓存服务多次。每次更改hostId时,它必须与使用ClusterConfig.xml和DistributedCacheService.exe.config文件的hostId相同