解決辦法:服務器未能識別 HTTP 標頭 SOAPAction 的值

轉自:http://www.cnsaturn.com/logs/2009/05/26/http-header-soapaction-value-cannot-recognized-by-server-errors

本文主要探討跨平臺調用Web Service出現:"服務器未能識別 HTTP 標頭 SOAPAction 的值"的解決辦法。

症狀一:

Web Service + ASP.NET 應用程序部署到服務器默認目錄中,在IE中用http://<服務器地址>/<程序目錄名>/<默認啓動頁面名>發生“服務器未能識別 HTTP 標頭 SOAPAction 的值”錯誤。

症狀二:

在Java平臺上調用.NET Web Service的服務時,出現"服務器未能識別 HTTP 標頭 SOAPAction 的值"。

症狀三:

在Java平臺下調用.NET WEB Service,出現數據時有時無。

解決對策:

給.NET的WebService類(即.asmx文件下的類)添加屬性[SoapDocumentService(RoutingStyle=SoapServiceRoutingStyle.RequestElement)]

小知識:

什麼是SoapAction?它在WSDL中有何作用?

SOAPAction HTTP request header被用來標識SOAP HTTP請求的目的地,其值是個URI地址。SOAP發送並不限制格式、URI特徵或其必須可解析,那麼在這種情況下,發送一個HTTP SOAP請求時,其HTTP客戶端必須使用/指明SOAPAction HTTP request header。

SOAPAction header的內容可以被用在服務端,諸如:防火牆適當的過濾基於HTTP的SOAP請求消息等場景。SOAPAction header的值爲空串("")表示SOAP消息的目的地由HTTP請求的URI標識;無值則表示沒有指定這條消息的目的地。

 

 

 

 

 

本人補充:
在.NET環境調用.NET WebService出現 “SOAPAction 值在 XML Web services 的所有方法中不唯一的錯誤”,也可以通過此法解決。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章