首页 新闻 会员 周边 捐助

有人做过ASP.NET调用SAP函数的B/S应用么

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-10-23 09:52

遇到了一点小问题。具体如下:

开发好的B/S程序在debug的时候可以正常的调用sap函数并获取数据,但是将程序打包好发布到IIS上的时候。问题就出来了。附加进程调试的时候,程序在 if (conn.Logon(null, true))  这个地方停下来了。初步诊断未iis调用sap有问题。sap的版本为730,iis版本为iis7.有了解这个的朋友么? 应用程序池已经标识为域用户中的最高权限用户。

小肥羊同学的主页 小肥羊同学 | 初学一级 | 园豆:137
提问于:2015-07-21 11:02
< >
分享
所有回答(1)
0

conn.Logon 是通过 socket ,还是 com 技术连接的 sap 服务器?

Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:25

com

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 11:26

@小肥羊同学: 那 sap 是作为进程外 com 组件,还是进程内 com 组件?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:28

@Launcher: 进程外

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 11:33

@小肥羊同学: sap 进程外组件是 32 位的,还是 64 位?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:36

@Launcher: 32位的

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 11:38

@小肥羊同学: 在 IIS 中,将应用程序池修改为 32 位。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:40

@Launcher: 原来就是32位的。还是不行,也尝试修改64位,直接报错了。

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 11:45

@小肥羊同学: 你别病急乱投医,首先 32 位的 COM 组件只能由 32 位的进程调用,其次调用进程外 COM 组件的进程的权限必须同宿主进程外 COM 组件的进程的权限一致。

所以,第一步,你必须保证 SAP COM 是 32 位的,其次,IIS 的应用程序池必须以 32 位运行(你应该检查下是否修改正确了,比如改了别的应用程序池,不要怀疑不应该修改为 32 位);然后,你可以将应用程序池修改为 Classic 模式,还可以将应用程序池的标识修改为 LocalSystem 。

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:50

@小肥羊同学: 另外“if (conn.Logon(null, true))  这个地方停下来”,停下来了,是什么意思?线程阻塞了?还是有异常抛出了?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 11:53

@Launcher: 是线程被阻塞了 没有抛出异常

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 13:02

@小肥羊同学: 

阻塞多久?

你部署的服务器同你开发时使用的同一台机器吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 13:07

@Launcher: 不是同一台机器,但都是iis7。还有就是之前也遇到过这个问题是在iis6上的,标识为指定账户之后就可以正常用了。然后在iis7上,这样配置却不可以。

支持(0) 反对(0) 小肥羊同学 | 园豆:137 (初学一级) | 2015-07-21 13:57

@小肥羊同学: 应用程序池模式修改为 Classic 了吗?

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 14:09

@小肥羊同学: 由于不是同一台机器,你先写个 Console 程序放在服务器上测试下 Logon 方法

支持(0) 反对(0) Launcher | 园豆:45050 (高人七级) | 2015-07-21 14:10
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册