1

我正在尝试在多个主机上设置一个网站,这些应用程序使用 App Fabric Caching 框架。

我已经在Machine1上使用 SQL Server(不是 XML)设置了 App Fabric,并且我使用“NT Authority\Network Service”用户来配置 App Fabric。我已经在同一台机器上设置了网站,并将“网络服务”设置为应用程序池标识。我已使用“grant-CacheAllowedClientAccount”命令将缓存存储权限授予“网络服务”用户。该网站正常运行,并且能够将数据添加/编辑/删除到缓存中。一切顺利。

但是,当我尝试使用完全相同的 IIS 和应用程序池设置在另一台机器 ( Machine2 ) 上托管相同的应用程序时,应用程序失败并出现以下错误:

有一个暂时的故障。请稍后重试。(指定的一个或多个缓存服务器不可用,可能是由于网络或服务器繁忙。对于本地缓存集群,还要验证以下条件。确保已为此客户端帐户授予安全权限,并检查 AppFabric所有缓存主机上的缓存服务都允许通过防火墙,而且服务器端的 MaxBufferSize 必须大于或等于客户端发送的序列化对象大小。)

如果我向所有人授予权限,它可以正常工作,但这不是一个很好的解决方案。

两台机器都驻留在域中。

您能否就此提供一些意见?

4

2 回答 2

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"

于 2012-12-13T07:34:40.863 回答
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>
于 2013-05-20T06:17:30.127 回答