我的Delphi 7(build 8.1)应用程序访问.NET SOAP Web服务时遇到问题。大多数情况下它工作正常,但有时我们会收到访问冲突。我相信(但并非100%肯定)只有当用户是第一个在“几小时内”访问网络服务时才会看到错误 - 例如我可以在一个循环中调用它数百次而没有任何问题。
我已经在所涉及的每台计算机上禁用了DEP(数据执行保护),并且我还尝试了从此下载中更新的WSDL导入程序:http://cc.embarcadero.com/Item/24535。 (但我无法关注有关运行时文件的自述文件,所以也许这是我的实际问题?)
有人知道如何解决这个问题吗?
答案 0 :(得分: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处理程序将知道该怎么做。
答案 1 :(得分:0)
我遇到了类似的问题,我建议您在DEP(数据执行保护)中包含您的应用程序而不是例外,因此它不会阻止应用程序。尽管如此,在我的情况下,有一个问题是WebService需要返回这个应用程序具有AccessViolation的答案。我不得不添加" Application.ProcessMessages"调用WebService后,在代码中运行。