使用REST API 地图服务无法访问非本地的缓存切片
2015-01-05 21:25
501 查看
最近碰到个比较奇怪的问题,当缓存切片和Server位于不同的服务器时,使用Internet(SOAP)或Local(DCOM)连接到ArcGISServer可以访问到缓存切片,但是通过Rest API却无法访问。
首先描述一下具体的配置过程:测试环境有两台服务器,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就可以成功访问缓存地图了。
首先描述一下具体的配置过程:测试环境有两台服务器,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就可以成功访问缓存地图了。
相关文章推荐
- ArcGis地图服务连接不上(ArcGIS Server for Java的REST接口无法访问)解决方法
- 关于使用Silverlight通过IP地址访问本地ArcGIS Server发布的Rest服务无法出图的问题
- Flex Api访问已经联动数据库的地图服务的要素属性
- ArcGIS API for Silverlight中通过https访问rest服务
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【二】——使用Repository模式构建数据库访问层
- 如何在BPM中使用REST服务(1):通过程序访问网页内容
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【九】——API变了,客户端怎么办?
- 关于Arcgis Server REST服务无法使用: Cannot acces http://localhost/arcgis/rest/services
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
- 使用宿主 self host server 创建 api 服务( 如果你没有IIS ,还想用rest风格api)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【十】——使用CacheCow和ETag缓存资源
- 切片地图服务使用Flex API编辑和更新切图
- 使用google map v3 api 开发地图服务
- ArcGIS API for Silverlight中通过https访问rest服务(三)
- 使用ASP.NET Web Api构建基于REST风格的服务实战系列教程【九】——API变了,客户端怎么办?
- 用arcgis server发布地图服务并建立缓存后,局域网内机器不能访问缓存图像的可能原因
- windows2003 IIS 服务启动失败,提示‘另一个程序正在使用此文件,进程无法访问',解决方法
- 无法通过Rest远程访问ArcGISServer发布的服务
- 关于IIS服务启动失败的问题:“IIS提示‘另一个程序正在使用此文件,进程无法访问’”,的解决方法
- SMP3.0学习笔记之十九 使用REST API在任何操作系统上消费SMP的OData服务