2009-09-21 47 views
0

我的問題與此密切相關:How can I use .NET web services from non-standard ports?。我的Web服務運行在端口轉發防火牆之後,因此WSDL文檔中報告的端口號包含內部高編號端口。我編寫了一個能夠重寫WSDL文檔的SoapExtensionReflector類。因此像example.com/path/loginservice?wsdl這樣的請求被正確處理。修復contractRef和docRef上的非標準web serverice端口

但是,這並不處理「迪斯科」請求:example.com/path/loginservice?disco。這將返回一個XML文檔是這樣的:

<discovery> 
    <contractRef ref="http://example.com:10092/loginservice.asmx?wsdl" docRef="http://example.com:10092/loginservice.asmx"/> 
    <soap address="http://example.com/path/loginservice.asmx" binding="q1:LoginServiceSoap"/> 
    <soap address="http://example.com/path/loginservice.asmx" binding="q2:LoginServiceSoap12"/> 
</discovery> 

雖然SOAP綁定已妥善由SoapExtensionReflector重新寫的,contractRef和docRef網址的高編號端口。我怎樣才能重寫它們呢?

回答

1

終於想通了。在將所有內容遷移到WCF後,使用svcutil手動創建代理類。我想你可以使用舊的asp.net web服務附帶的wsdl工具來做同樣的事情,但我沒有嘗試過。

+0

我沒有找到修復程序。我切換到WCF。我仍然需要使用WCFExtras編寫擴展來修復端口問題。這清理了WSDL,但我仍然在.svc網頁上顯示端口號,儘管它在那裏相當無害。 –