如果ADF程序用Local方式连接服务,用VS时必需添加Identity。办法是VS中右键单击网站工程,Add ArcGIS Identiy。
如果部署程序的IIS机器和SOM机器是两台机器,则需要注意了。Add ArcGIS Identity对话框中,填写的用户名密码必需在SOM及其的agsusers或agsadmin组中,并且这里不能勾选加密选项。因为Add ArcGIS Identity工具使用的machine specific(开发机器)的DataProtectionConfigurationProvider方法加密,而这样的话在IIS机器上是无法识别这个加密串的。如果在Add ArcGIS Identity对话框中勾选了加密选项,而后将程序部署到了另外的IIS机器上,则可能出现以下错误:
未能使用提供程序“DataProtectionConfigurationProvider”进行解密。
解决办法是改用RSAProtectedConfigurationProvider加密办法。如果要在开发机器上加密,则需要导出custom RSA key container为xml文件,在IIS机器上还需要导入之,并且在aspx页面中也需要添加代码才行,具体步骤见:http://msdn.microsoft.com/en-us/library/2w117ede.aspx。如果只要求加密,不追究加密细节的话,可以采用一种简便办法,就是将明文的Identity拷贝到IIS机器上后,用命令行来完成RSA加密过程。步骤如下:
1、右键网站工程,Add ArcGIS Identity。填写SOM机器上的至少在agsusers组中的成员账户,机器名指定IIS机器名(IIS机器上需要创建同样的账户)。如果是域用户,则指定域名;
2、不要勾选加密选项,点击OK。此时web.config里identity节点的用户名密码是明文保存的;
3、拷贝程序文件夹到IIS机器上,建立虚拟目录,转成应用程序,赋予执行脚本权限,使用ArcGIS的应用程序池。此时浏览网站应该是正常的。如果提示地图控件没有primary map resource,确保你的服务在SOM机器上正常工作,然后关掉SOM机器的防火墙;
4、用命令行进行加密。cmd方式到WINDOWSMicrosoft.NetFrameworkv2.0.*目录,运行以下命令:
aspnet_regiis -pe "system.web/identity" -app "/WMA"
其中WMA是IIS中应用程序的名称。
此时查看该网站的web.config文件,identity节点已被加密。并且程序可以正常访问。
参考:http://help.arcgis.com/en/sdk/10.0/serveradf_net/conceptualhelp/index.html#//0002000000w4000000