SAP Connector Core通过RFC取数:Kestrel正常但IIS无法运行
问题描述
- 使用SAP Connector Core库通过RFC获取SAP数据,本地Kestrel服务器运行正常,部署到IIS后无法正常工作
- 已下载并配置SAP官方NWRFC SDK,安装了ASP.NET Core托管捆绑包
- 查看
C:\Windows\System32\LogFiles\HTTPERR\httperr1.log日志,关键错误信息如下:
2023-03-10 02:36:26 ::1%0 53017 ::1%0 4430 HTTP/2 GET /home/GetSapData 25 - 4 Connection_Abandoned_By_ReqQueue PublishCode 2023-03-10 02:41:26 ::1%0 53064 ::1%0 4430 HTTP/2 GET /home/GetSapData 1 503 4 AppOffline PublishCode
- 已尝试以下无效配置调整:
- 将应用程序池的
Enable 32-Bit Applications设为true - 提高应用程序池的回收私有内存限制
- 增大缓存输出大小
- 将应用程序池的
解决方案建议
确保NWRFC SDK的兼容性与权限
- 匹配SDK与应用程序池的位数:若启用32位应用,必须使用32位NWRFC SDK;否则使用64位版本
- 给IIS应用程序池的运行身份(默认
ApplicationPoolIdentity)分配NWRFC SDK安装目录的读取权限 - 可将NWRFC SDK
lib目录下的所有DLL复制到ASP.NET Core应用的发布输出bin目录,规避路径和权限问题
调整应用程序池配置
- 将应用程序池的
.NET CLR版本设置为无托管代码(ASP.NET Core为自托管模式,IIS仅做反向代理) - 临时将应用程序池运行身份改为
LocalSystem测试,排除权限不足导致的RFC连接失败
- 将应用程序池的
消除503 AppOffline错误
- 检查IIS站点物理路径下是否存在
app_offline.htm文件,若存在立即删除 - 重启应用程序池与站点,确保应用正常加载
- 检查IIS站点物理路径下是否存在
启用详细日志定位具体错误
- 在
appsettings.json中开启详细日志:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Debug", "SapCo2": "Debug" } } } - 查看应用日志文件,定位RFC连接阶段的具体异常(如SAP服务器连接失败、凭证错误、SDK加载失败等)
- 在
优化IIS请求超时与队列设置
- 延长IIS站点的
连接超时时间(默认120秒),适配RFC请求的耗时 - 调整应用程序池的
队列长度(默认1000),避免请求队列溢出导致Connection_Abandoned_By_ReqQueue错误
- 延长IIS站点的
验证SAP连接配置一致性
- 确认IIS部署环境下的SAP连接参数(服务器地址、系统编号、客户端、账号凭证等)与本地Kestrel环境完全一致,无硬编码的本地配置差异
内容的提问来源于stack exchange,提问作者Sumit Chourasia
相关产品推荐
相关产品推荐

