日前服务器罢工!无奈只好重装!系统装完问题也随之而来!原本运行很正常的com+组件出现了些异常!
服务器为2003系统!组件全部是用VB6.0写的!客户端用vb.net 2005写的。
出现的问题是我有部分组件运行正常!有部分在调用具体方法时会提示“一个或多个参数无效”!
在网络上翻了两天始终没有找到方法!望高手指点迷津!不胜感激。
服务器为2003系统!组件全部是用VB6.0写的!客户端用vb.net 2005写的。
出现的问题是我有部分组件运行正常!有部分在调用具体方法时会提示“一个或多个参数无效”!
在网络上翻了两天始终没有找到方法!望高手指点迷津!不胜感激。
是什么意思?
补充一点。
假设我的服务器名称叫myserver,ip为192.168.0.10
如果我连接组件方式用的是机器名"MyServer"运行一切正常。
连接组件方式用改为"http://192.168.0.10"就好出现“一个或多个参数无效”!
>ping -a 192.168.0.10
不能取得机器名 MyServer
访问http://192.168.0.10/msadc/test.txt也能正常显示。
也有在服务器上重新编译、注册。
但问题还是存在!我个人认为是设置问题!并非系统的版本或组件的版本问题!
也许会是IIS中的设置问题?有没有精通这一块的朋友。
因为如果用机器名创立组件的链接是不通过IIS的,一切运行正常。
然而用"http://192.168.0.10"就的通过IIS中转,目前出现问题的也就是这种连接方式下才会出现错误!
>ping -a 192.168.0.10
用 IP 可以直接访问文件,访问 COM+ 组件需要用服务器名,这是两种不同的方式。
ping -a 192.168.0.10pinging myserver[192.168.0.10] with 32 bytes of data:
reply from 192.168.0.10:bytes=32 time<1ms TIL=128
reply from 192.168.0.10:bytes=32 time<1ms TIL=128
reply from 192.168.0.10:bytes=32 time<1ms TIL=128
reply from 192.168.0.10:bytes=32 time<1ms TIL=128ping staristics for 192.168.0.10:
packets:sent = 4, Received = 4, lost = 0 <0% loss>,
approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
1)重装服务器前后 IP 是否没变?
2)COM+的组件有没有在服务器上重新打包后到客户端安装?
的参数 servername 只要一个服务器名称就可以了,没见过带协议的方式 "http://192.168.0.10",换成只有 IP 的 "192.168.0.10" 试试。
能否留下联系方式及时沟通!
或是你加我!
M S N :saillife @ 163 .com
Q Q:9 8 2 9 2 1 8 4 1
请去除空格后加我
现将我的组件及调用的代码贴出,望对各位高手有所帮助。
调用函数:
gobjRDS = CreateObject("RDS.DataSpace")
objTemp = gobjRDS.CreateObject(gcntComtool_Spec, gcntstrComponentIP)
grsData = objTemp.GetSysData(SessID, strRetMsg, gint16Val, strLogin, strSite)
If gint16Val < 0 Then
Exit Try
End If'组件
Public Function GetSysData(ByRef SessID As String, _
ByRef strRetMsg As String, _
ByRef intRetNum As Integer, _
ByVal strLogin As String, _
ByVal strSite As String) As ADODB.RecordsetEnd Function
也就是在服务端实际创建的是 ADO 2.8 的实例,你通过 2.7 的接口调用,正常情况下是没有问题的。
●但是看起来你的 ADO 对象要在服务端和客户端进行传递,这样序列化和反序列化的版本必须一致。
服务端 2.8 对象进行序列化,如果客户端只有 2.7,是无法进行反序列化的。
VS.Net 的是 ADOX
ADO 2.x 的是 msado15.dll
我认为问题点应该在服务器(IIS设置、组件服务设置)的设置上!
毕竟我这个套程序套成熟的程序!com+组件部分,以及与com+组件连接的部分已经两三年没改动过来。
突然出现问题!应该不会存在于引用组件的版本上!可能是系统版本不同,设置上没有注意到!
望能帮忙想想,谢谢你这么多天来帮我想了那么多办法。
系统版本:windows server 2003 standard edition service pack 1
IIS版本:6.0
VS.Net 引用 COM 可能还要重新进行导入。
1.VS.net 中的Adodb.dll与VB6.0中的ADO不论是那个版本都是兼容的,可以传送。所以出现类似问题的朋友就不用往这里边钻了。
2.如果你希望通过IIS来调用你的组件最好装上NETBIOS协议
3.建立组件前确保组件全部正确注册。