ArcGIS Engine开发常见问题解析
更新时间:2026-02-01 09:22:49
ArcGIS Engine开发常见问题解析
学习开发时遇到的种种问题,皆为亲身经历与真实记录。
在调试软件的数据库工具时,已经提前在本地计算机上配置好了SQL Server与ArcSDE环境,并可以正常连接数据库。然而,在执行栅格数据导入操作时,系统弹出错误提示:Underlying DBMS did not accept username/password(底层数据库管理系统未接受用户名或密码)。通过排查发现,异常发生在代码调用rasterSdeServerOperation.Create方法处,表明虽然能建立数据库连接,但在创建SDE服务实例的过程中因认证失败而中断。问题可能与权限配置、用户凭据验证或SDE服务设置有关。

背后隐藏着后台固有密码设置漏洞,未结合用户输入验证,致使无法修复错误。
- 修改代码以读取用户输入的密码后,问题依旧存在,sdeCon.Password未能正确获取输入的密码内容。
由于安全考量,ESRI对IPropertySet::GetProperty设置了限制:允许写入但禁止读取密码信息。此措施的主要目的是为了防止敏感信息泄露,并确保系统在处理认证凭据时具有更高的安全性,避免未经授权的访问或窃取密码数据。
- 删除代码中sdeCon.Password = sde这一行即可解决问题。
可以省略图中的sdeCon.Password = propertySet.GetProperty(password).ToString这一行代码,简化为仅设置服务器地址、用户名等属性即可。当程序启动时,若未填写密码信息,会自动打开登录窗口,要求用户手动输入密码(示例)。这样处理提升了系统的安全性,避免了密码在代码或配置文件中以明文形式出现。同时,这种方式增加了灵活性,适用于需要动态认证的场景。

开发过程中遇到缺少ArcGIS Engine Enterprise Geodatabase许可的问题时,首先需要确认环境未启用访问企业级地理数据库所需的授权。这种授权是连接和操作企业级Geodatabase所必需的特定权限。要查看本机已激活的扩展模块并判断是否包含Enterprise Geodatabase支持,可以通过使用ArcGIS Administrator工具进行检查。此外,在代码中调用许可验证接口也是一个重要的方法。通过检测当前可用许可类型,可以确认是否拥有企业级Geodatabase操作所需的权限。
如图所示,GDB Update许可等同于ArcGIS Engine Enterprise Geodatabase许可。这表明,在ArcGIS Administrator中显示的Geodatabase Update许可实际上就是ArcGIS Engine提供的企业级地理数据库更新许可,两者名称不同但功能一致。它们共同为分布式环境中提供数据访问和修改权限,确保用户能够安全有效地编辑与更新企业级地理数据库。
