2013-03-06 58 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」函數。