2009-04-14 48 views
0

因此,我試圖使用soap與webservice進行通信並獲取錯誤。這個特定問題令人沮喪的是,它與我的本地web服務副本(是的,我嘗試關閉我的防火牆)完美兼容,並且以前版本的web服務和客戶端可以正常工作。我懷疑我可以(儘管我將不得不查找如何執行此操作)爲客戶端發送的內容添加一個操作參數。然而,我很好奇爲什麼它能夠在沒有人的情況下工作。Soap Post Failure

編輯澄清:我認爲相關的代碼是,當它停止工作,當它的工作(因爲我查了針對老版本的程序和有同樣的問題和相關的代碼是間同同樣...除非我錯過了一些微妙的東西)。我知道實際的服務器程序在本地副本和遠程副本上都是相同的,即使它只在本地工作。因此,我懷疑有一些奇怪的配置設置,我可以改變它使其工作。

錯誤消息:「soap:ClientUnable無法處理沒有有效操作參數的請求,請提供有效的soap動作。」

VB客戶端代碼

'WEB_SERVICE_URL_CONST = http://site.com/foo.asmx 
'domDoc.xml = <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><TestConnection xmlns="http://site.com"/></soap:Body></soap:Envelope> 

Dim oXml As New XMLHTTPRequest 
oXml.Open "POST", WEB_SERVICE_URL_CONST, False, "\" 
oXml.setRequestHeader "Content-Type", "text/xml" 
oXml.send domDoc.xml 

C#服務器代碼

[WebMethod] 
     public int TestConnection() 
     { 
      return 1; 
     } 

回答

0

問題出在xmlns="http://site.com"的代碼。當我在本地進行測試時,我錯誤地使用了xmlns="http://localhost"。事實上,無論我在哪裏測試,客戶端或服務器(在服務器上,這將是WebService(Namespace =...))都不應該更改此值,但如果它發生更改,則客戶端和服務器需要匹配。

0

確定前兩行不註釋掉在現實的版本?示例代碼似乎對WEB_SERVICE_URL_CONST和domDoc.xml沒有任何價值,並且一個空的Soap請求確實不會指定任何操作?

編輯:我發現「用於與以前版本的web服務和客戶端正常工作」有點混淆。如果你真的改變了客戶端和服務器,那麼哪部分沒有改變?

+0

註釋掉的行在實際版本中不存在:它們被添加以提供示例代碼不提供的上下文。我驗證了這些值是我在運行時說的,儘管這兩個地方的網址都是假的。 – Brian 2009-04-15 13:54:01