2009-12-10 41 views

回答

0

WSDL是從WCF基礎架構自動生成的。因此,如果您不在此服務器上部署Web服務,則無法公開WSDL。您當然可以手動複製生成的XML文件,但如果原始Web服務發生更改,則需要在其他服務器上更新它們。

0

那麼,如果你想從另一臺服務器準確的爲你的WSDL和你只是路過的所有請求,你可能只需要更新WSDL:WSDL中的服務元素與新的正確的終點(可能通過用外部域替換內部域)。

您可以手動執行此操作,只需更改後端代碼即可更新面向公衆的WSDL,也可以通過在XmlDocument中解析並在呈現輸出前更新相關節點。我不相信任何東西會爲你自動化。

0

我不知道,如果你發現答案,但

WCF服務具有端點,在其web.config中定義。那些 一個被稱爲

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> 

和用於IMetadataExchange接口合同被定義。 現在這傢伙在同一個文件

<behavior name="OverlayService.Service1Behavior"> 
    <serviceMetadata httpGetEnabled="true"/> 
    <serviceDebug includeExceptionDetailInFaults="false"/> 
</behavior> 

Service1Behavior是整個WCF服務的行爲,已經定義了一個行爲,它使HTTPGET上ServiceMetadata 操作。

MEX是元數據服務地址默認名稱。

把你想在這裏的任何端口,而是一個提醒,去8000-9000和超越。

<Host> 
<add baseAddress="http://localhost:8080" /> 
</Host> 

是在web.config中,它是你所定義的標籤,直接孩子 (其之間,進一步unested)

WCF服務最好在IIS虛擬路徑:http://localhost/servicename.svc 和順便說一下不會有IIS中的「MEX」文件夾,它在裝配和IMetadata不需要系統的定義,它是.NET定義的一部分,沒有必要有它 它一個衆所周知的文件名稱。

+1

對不起,這一個錯字 – PatLap 2010-12-24 00:08:14