delphi开发的soap服务,客户端调用出错

kernel002 2009-02-03 02:41:57
基本情况是

delphi开发的soap服务端和客户端程序。服务端放在iss的可执行目录下。 只是简单实现了一个返回字符串的接口函数。

当客户端在本机(有delphi开发环境)执行没有问题。

在局域网其他机器上可以用ie打开服务的exe文件,并出现服务接口信息。但是执行客户端程序,调用那个接口函数的时候报地址错误,不知道是什么原因?
...全文
384 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lbd8848 2010-03-12
  • 打赏
  • 举报
回复
http://hi.baidu.com/woainiyuefei/blog/item/d6640d19d557f70d35fa41ac.html
kernel002 2009-02-05
  • 打赏
  • 举报
回复
我开发的soap只支持xp,不支持win2003!


哎!只有不了了之!
kernel002 2009-02-04
  • 打赏
  • 举报
回复
网站正常可以访问,我在IIS管理器中点‘浏览’都报404错误(找不到文件)

需要安装 ActivePerl
金卯刀 2009-02-04
  • 打赏
  • 举报
回复
web服務器iis配置好就可以了。
kernel002 2009-02-04
  • 打赏
  • 举报
回复
delphi 开发的soap cgi程序,发布到其他机器上,除了执行权限,还需要配置些什么!
kernel002 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 unsigned 的回复:]
引用 3 楼 kernel002 的回复:
---------------URL写的是IP地址,客户端在开发的机器上执行是正常的,在其他机器上才报访问非法的地址错误。
服务端注册应该是自动生成的吧。我是用向导生成的接口。
这个“地址”应该是指的内存地址吧?还是要看具体的错误信息而定。有可能是获取接口失败,但是调用之前未做检查。
[/Quote]

----------------客户端怎么做检查呢! 怎么指定是否获取接口成功! 另一台机器是没有delphi的。
另一台机器上的IE 输入wsdl是有返回的正常.

现在怀疑是不是我的DELPHI有问题,连联机的例子都报同样的错
金卯刀 2009-02-04
  • 打赏
  • 举报
回复
按照 unsigned 的說法, 你在client端做檢查,看看是否正常獲取接口。
我說的那種驗證方式未必是正確的。
kernel002 2009-02-04
  • 打赏
  • 举报
回复
服务程序是没有界面的,运行时出现DOS窗体后,就一闪而过了!

在其他机器上运行客户端程序,在执行调用方法时候 还是报 Access violation at address 00c4958c.Write of address 00c4958c

在同开发的这台机器上,客户端是正常的!调用也正常。

另外:我把delphi自带的例子,也是这样的情况。
金卯刀 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kernel002 的回复:]
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
这个在..Intf.pas文件里

invRegistry.RegisterInvokableClass(TYourClass);
这个在..Impl.pas文件里


http://..../pMyTest2.exe/wsdl 可以看到2条记录,第一就我写的接口 (另外说明一下,我在同一台机器上执行客户端是正常的)
[/Quote]

在服務端你有運行你的exe嗎?若沒有,先運行一下,關閉後,再在客戶端請求服務,看是否正常。
做這個動作,是想確認,程序在服務端是否被注冊了。猜測可能是注冊問題,導致在服務端無法找到函數,而報地址錯誤。
僵哥 2009-02-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 kernel002 的回复:]
---------------URL写的是IP地址,客户端在开发的机器上执行是正常的,在其他机器上才报访问非法的地址错误。
服务端注册应该是自动生成的吧。我是用向导生成的接口。[/Quote]
这个“地址”应该是指的内存地址吧?还是要看具体的错误信息而定。有可能是获取接口失败,但是调用之前未做检查。
kernel002 2009-02-04
  • 打赏
  • 举报
回复
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
这个在..Intf.pas文件里

invRegistry.RegisterInvokableClass(TYourClass);
这个在..Impl.pas文件里


http://..../pMyTest2.exe/wsdl 可以看到2条记录,第一就我写的接口 (另外说明一下,我在同一台机器上执行客户端是正常的)
ajiwuweibin 2009-02-04
  • 打赏
  • 举报
回复
不懂,不过调试看看应该可以找出原因。
金卯刀 2009-02-04
  • 打赏
  • 举报
回复
你只要檢查服務端程序是否有如下代碼就可以了。
initializaiton
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
invRegistry.RegisterInvokableClass(TYourClass);
若有,你通過ie查看wsdl是否有你需要的接口
金卯刀 2009-02-04
  • 打赏
  • 举报
回复
你用和你本機的操作系統相同的機器 測試看看
kernel002 2009-02-04
  • 打赏
  • 举报
回复

delphi7开发的soap发布到win2003 IIS6.0上好像有问题啊!
kernel002 2009-02-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 Avan_Lau 的回复:]
1、确认客户端的url是否正确,服务端路径变化,客户端也要更改;
2、服务端程序是否有注册?在initializaiton
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
invRegistry.RegisterInvokableClass(TYourClass);
[/Quote]


---------------URL写的是IP地址,客户端在开发的机器上执行是正常的,在其他机器上才报访问非法的地址错误。
服务端注册应该是自动生成的吧。我是用向导生成的接口。
金卯刀 2009-02-03
  • 打赏
  • 举报
回复
1、确认客户端的url是否正确,服务端路径变化,客户端也要更改;
2、服务端程序是否有注册?在initializaiton
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
invRegistry.RegisterInvokableClass(TYourClass);
kampan 2009-02-03
  • 打赏
  • 举报
回复
up

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧