首先描述一下具体的配置过程:测试环境有两台服务器,A是Server服务器,安装了SOM,SOC,Webservices组件。B是文件服务器,只用于存放缓存。两台服务器位于同一个局域网内。具体的配置过程:
1)在文件服务器B上创建缓存目录arcgisserver22,然后将其共享,在共享权限和安全权限中分别赋予ArcGISSOC和ArcGIS Web Services账户访问控制权限。配置这一步前,首先要在B机器的操作系统级别创建和Server服务器相同的ArcGISSOC和ArcGIS Web Services账户,必须要确保用户名和密码完全一致,注意区分大小写。
2)在Server 服务器A的IIS控制台下,创建虚拟目录,将物理路径指向文件服务器的缓存目录(例如\\192.168.200.22\ArcGISCache22),在传递身份验证点击连接为…按钮。将凭据设置为arcgiswebservices账户,我这里对应的账户是makl。设置好后可以在B机器的arcgiscache22上放置一张图片,然后再通过虚拟目录访问,验证图片可以被成功访问,则说明虚拟目录配置正确。
3)在arcgisserver的管理控制台添加新的cache目录,并配置服务使用新的缓存目录。添加新缓存目录前要确保使用arcgisserver管理员身份连接server ,并且所有服务都已停止。
在服务器属性页添加新的缓存目录
在服务属性页为服务指定新的缓存目录
4)启动服务创建缓存切片。
5)切片结束后,会发现切片的确已经生成到arcgiscache22目录下。通过local和internet连接均可以访问到切片。但是通过RestAPI无法访问。
产生问题的原因:
当缓存存储在与Web Server分离的环境下时,由于授权问题,REST tilehandler无权访问硬盘上的文件。
解决方法:
要解决这个问题,可以通过改变对切片返回的文件系统的授权。即取消REST的impersonate,直接将Rest所在进程池授权赋予ArcGISWeb Services账号。具体设置步骤参考:
以下步骤限于Windows 2008 Server ,Windows Vista,或Windows7操作系统:
- 创建一个新的IIS应用程序池,并且设置它的Identity为ArcGIS WebServices账号,并设置启用32位为true。
- 修改C:\Windows\Temp目录的访问权限,添加ArcGIS WebServices账户对该目录的读写权限。
- 配置ArcGIS SOAP Webservices不使用impersonation.
打开C:\inetpub\wwwroot\ArcGIS\Services\web.config文件:
- 配置ArcGIS REST WebServices不实用impersonation.
打开C:\inetpub\wwwroot\ArcGIS\rest\rest.config
- 添加ArcGIS WebServices(SOAP和REST)到新的应用程序池。
- 重启ArcGIS Server ObjectManager(SOM)服务。
经过上面的配置,RestAPI就可以成功访问缓存地图了。