VMware vSphere retrievePropertiesEx 控制台正常但IIS环境触发栈溢出问题
对接ESXi接口在IIS环境下触发栈溢出的问题排查
问题现象
- 自研VB.NET编写的ESXi对接接口程序,基于VMware vSphere Web Services API实现,通过
retrieveProperties、retrievePropertiesEx接口拉取ESXi平台的动态属性数据 - 控制台测试应用环境下,全接口运行完全正常
- 部署到IIS或IIS Express环境后,仅返回大数据集的属性查询请求(例如虚拟机配置信息查询)会触发栈溢出错误
- 已尝试将IIS Express切换为64位运行模式,问题仍可稳定复现
- 初步判定不属于常规内存不足类问题:常规内存不足场景预期抛出内存不足异常,与当前触发栈溢出的异常表现不匹配
交叉验证结果
- 开发架构为ASP.NET MVC Web项目,引用自研VB.NET通用类库,类库内部封装了全部vSphere API的调用逻辑
- 交叉验证过程:将同一份VB.NET类库独立引入基础控制台测试项目,无论在调试模式还是正式发布版本下运行,都不会触发栈溢出异常
- 可排除类库全局代码逻辑存在缺陷的可能性
根因与解决方案
- 经过版本对照排查,该栈溢出问题仅在vSphere Web Services SDK 6.5版本下存在
- 已验证的有效解决方案:使用SDK 7.0版本源码重新编译生成
vim25service.dll,替换项目中原6.5版本的对应依赖后,IIS环境下调用retrievePropertiesEx接口触发的栈溢出问题即可完全解决
内容的提问来源于stack exchange,提问作者bphillus
相关产品推荐
相关产品推荐

