2012-06-19 40 views
0

這是情況。我從Apache/Tomcat服務器(Java)生成的某個人收到了WSDL(幷包含XSD)。我做一個項目的公司,更喜歡.NET,所以我使用wsdl.exe來生成部分類並創建了web服務。通過更改URL在.Net Webservice和Java Webservice之間切換

然後,我創建了一個.NET客戶端(在這種情況下,我使用的是VB.NET),它具有對java wsdl的Web引用。這工作正常。然後我使用代碼更改網址,並使其指向我新創建的.NET服務,但似乎無法使其工作。 反過來做這件事似乎也行不通。

用命名空間和服務名稱擺弄了一下,但似乎無法破解它。給我一個關於HTTP頭無法找到的錯誤。作爲一種方法。這表示運輸問題。

我真的不想回到計劃B,創建一個Java Web服務,然後將其鏈接到.NET環境。我知道這會起作用,因爲你永遠不需要更改網址。

有什麼建議嗎?

+0

請做一些更多的研究(或問一些問題,以 '人')。 Tomcat無法生成任何wsdl文件。像軸,軸2,cfengine,地鐵等框架。 。 。去做。什麼是肥皂版本(1.1或1.2)?使用哪種編碼(rpc/encoded,document/literal ...)?最後但並非最不重要的是:當涉及到「錯誤」時更具體。這裏的人不喜歡隨便猜測。 。 。 – MartinK

+0

問題是非常具體的:是否有可能有1個客戶端存根連接到一個Java生成(可能是axis2)和.NET(C#版本2或更高版本),而無需重新生成stibs,但只需更改url。使用soap版本並不重要,因爲.NET客戶端支持您提到的兩個版本。如果可能存在關於asmx文件或名稱空間或操作名稱的任何問題,我對此感興趣。 – ZorbaSan

+0

連接到.net Web服務時得到的確切錯誤:System.Web.Services.Protocols。的SoapException:服務器無法識別的HTTP頭SOAPAction的價值。 在System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest() 在System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage消息) 在System.Web.Services.Protocols.SoapServerProtocol.Initialize() 在系統.Web.Services.Protocols.ServerProtocol.SetContext(類型類型,HttpContext的上下文中,請求的HttpRequest,HttpResponse對象響應) 在System.Web.Se ...... – ZorbaSan

回答

1

所以總結你有:
服務器端:java中,WSDL:JAVA產生
.NET客戶端 - > Java服務器 - WORKS .NET客戶端 - > .NET服務器 - >失敗

如果那的這種情況與Java沒有多大關係!
但我確實知道,因爲我早就知道.NET服務器對肥皂操作標題感到疑惑。
WSDL中是否存在soapAction?
如果是這樣,你需要發送該值,但我不知道如何在.NET中做到這一點(谷歌將是你的朋友在這裏)。
如果沒有,請查看評論在這個問題上如何確定所需的SOAP動作頭值:stackoverflow.com/questions/2262781/soap-action-wsdl

+0

謝謝。你的回答給了我不同的搜索角度。不是答案,但非常有幫助。想給你一些學分 - 如果只爲正常回答,而不是別人 - 而是如何去接受答案毫無頭緒。 – ZorbaSan

+0

沒問題,也謝謝。爲找到解決方案做得好,看起來像.NET的怪癖? – davidfrancis

0

有點過迪瓦恩知識庫搜索後(谷歌),我已經設法得到這個修復。

除了是在指定的port名字很小心(默認設置會不總是要求什麼,所以你需要重寫它),但是最重要的是,我發現,添加

爲ASM類頭的一部分解決了我的問題。現在我需要做的是找出原因?

但相信我,它的工作原理...

I found the solution here