我正在尝试在多个主机上设置一个网站,这些应用程序使用App Fabric Caching框架。
我在 Machine1 上使用SQL Server(而不是XML)设置了App Fabric,我使用了" NT Authority \ Network Service"用户配置App Fabric。我已经使用"网络服务"在同一台计算机上设置了网站。设置为应用程序池标识。我已经允许缓存存储到"网络服务"用户使用" grant-CacheAllowedClientAccount"命令。网站功能正常,可以添加/编辑/删除数据到缓存中。一切顺利。
但是,当我尝试在具有完全相同的IIS和应用程序池设置的另一台计算机( Machine2 )上托管相同的应用程序时,应用程序将失败并显示以下错误:
暂时失败。请稍后重试。 (一个或多个指定的缓存服务器不可用,这可能是由忙碌引起的 网络或服务器。对于本地缓存群集,还要验证 以下条件。确保已授予安全权限 对于此客户端帐户,并检查AppFabric缓存服务 允许通过所有缓存主机上的防火墙。还有 服务器上的MaxBufferSize必须大于或等于 从客户端发送的序列化对象大小。)
如果我获得了所有人的授权许可,那么它运行正常,但这不是一个很好的解决方案。
两台计算机都位于域中。
您能否就此提供一些意见?
答案 0 :(得分:4)
看起来你只是缺少在machine1上运行以下命令
Grant-CacheAllowedClientAccount -Account“DOMAIN1 \ Machine2 $”
执行此操作后,NETWORK SERVICE帐户中machine2上运行的所有服务都将能够访问Machine1上托管的Appfabric缓存
在此详细解释 - http://msdn.microsoft.com/en-us/library/ff921012(v=azure.10).aspx
请注意,如果客户端应用程序作为内置计算机帐户运行,例如“NT Authority \ Network Service”,则可以授予计算机对缓存集群的访问权限。要执行此操作,请使用计算机帐户,即具有附加美元符号的域名和计算机名称。以下示例将缓存集群访问授予名为DOMAIN1的域中名为Server1的计算机。
Grant-CacheAllowedClientAccount -Account“NT Authority \ Network Service”
答案 1 :(得分:2)
另一种解决方案是设置安全性和安全性。客户端配置和AppFabric缓存服务配置中的保护级别均为无。
在web.config / app.config文件中
<dataCacheClient>
<securityProperties mode="None" protectionLevel="None"/>
<hosts>
<host name="XXXX" cachePort="22233"/>
</hosts>
在AppFabric缓存服务配置文件
中 <advancedProperties>
<securityProperties mode="None" protectionLevel="None" />
</advancedProperties>