2013-03-06 53 views
0

我的Delphi 7(内部版本8.1)应用程序访问.NET SOAP Web服务时遇到问题。大多数情况下,它工作正常,但有时我们会收到访问冲突。我相信(但不是100%肯定),只有当用户在“几个小时”内第一次访问网络服务时才会看到错误 - 例如,我可以在没有任何问题的情况下循环数百次。Delphi 7 Web服务调用和访问冲突

我参与的每台计算机上已经禁用DEP(数据执行保护),我也试着从这个下载更新的WSDL进口商:http://cc.embarcadero.com/Item/24535。 (但是我没有能够关注运行时文件的自述文件,所以这可能是我的实际问题?)

有谁知道如何解决这个问题?

+1

将madExcept或EurekaLog添加到您的应用程序并获得一些真实的诊断信息。没有任何信息就无法解决问题。再次阅读这个问题。你真的认为任何人都可以回答吗?找出程序中发生错误的地方,并从那里取出。以上工具将帮助您找到故障。 – 2013-03-06 14:39:52

回答

2

看到我对这个问题的回答How do I get the SOAP response when there was an exception? 实际上,我有两个答案,但有趣的是RIO OnAfterExecute处理程序。在那里你可以将你的SOAP响应记录到一个文件中,并且你可以看到发生了什么。我预计在闲置数小时后,服务器可能会提供空的响应或超时。如果SOAP响应XML返回为空,并且您尝试将响应作为SOAP对象处理,则它将为零,并且您肯定会用A/V炸毁。所以这样,你就可以检查原始TEXT回来,并作出相应的反应。 而你实际上可以在这里构建防御性代码。例如,如果响应为空,则可以交换其他表示SOAP错误异常的其他XML。现在您的SOAP处理程序将知道该怎么做。

0

我经历了一个类似的问题,并且我建议你在应用程序中包含DEP(数据执行保护)中的异常,所以它不会阻止应用程序。不过,就我而言,WebService需要返回此应用程序具有AccessViolation的答案。在调用WebService之后,我必须在代码中添加“Application.ProcessMessages”函数。