2012-10-31 29 views
4

我試圖生成WSDL,然後使用客戶端手動在WSDL中找到每個XSD。該服務目前僅在我的本地主機上,並且尚未發佈。如何將WCF WSDL和XSD分享給未訪問服務的客戶端(尚)?

客戶越來越以下錯誤:

該文件的理解,但無法進行處理。 WSDL文檔包含無法解析的鏈接。 下載'http:// localhost:xxxx/MyService.svc?xsd = xsd0'時出錯。 無法連接到遠程服務器的連接可以作出,因爲在 目標機器積極地拒絕它127.0.0.1:xxxx

應如何服務的WSDL和XSD的生成和共享,使他們能夠開始編碼客戶端(不訪問服務大氣壓?

編輯 的問題涉及到這些在WSDL/XSD

WSDL

<xsd:schema targetNamespace="http://tempuri.org/Imports"> 
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd0" 
      namespace="http://tempuri.org/"/> 
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1" 
      namespace="http://schemas.microsoft.com/2003/10/Serialization/"/> 
    <xsd:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd2" 
      namespace="**MYNAMESPACE**"/> 
</xsd:schema> 

XSD

<xs:import schemaLocation="http://localhost:xxxx/MyService.svc?xsd=xsd1" 
    namespace="http://schemas.microsoft.com/2003/10/Serialization/"/> 

編輯2: 感謝@The Indian Programmmer我能夠生成一個代理類程序對使用此命令:

"C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\svcutil.exe" -noconfig -namespace:*,SERVICE.INTERFACE.NAMESPACE -serializer:datacontractserializer https://My-PC/SvrLocation/MyService.svc?wsdl (在本地IIS託管)

+1

http://stackoverflow.com/questions/985320/wcf-how-to-generate-a-single-wsdl-document-without-wsdlimport可能有助於 – paragy

+1

謝謝,NET 4.5看起來非常方便,內置singleWsdl而不是?wsdl – lko

+0

我不知道如何選擇「答案」。我使用@The Indian Programmer和@ Kristof的答案來獲得一個可以編程的.cs文件(包含服務合同和DataContracts)。我更改'schemaLocation =「localfile.xsd」',然後使用'wsdl.exe file.wsdl localfile.xsd localfile2.xsd localfile3.xsd',所以基本上他們都幫我解決了這個問題。 – lko

回答

5

首先通過運行您的服務瀏覽您的wsdl。

然後單獨瀏覽WSDL中的所有xsd,並將它們保存爲xsd文件。

用新的xsd相對路徑更新您的wsdl ..只需用它的名稱替換xsd的整個鏈接即可。

Replace http://localhost:xxxx/MyService.svc?xsd=xsd0 with respective FileName

<xsd:schema targetNamespace="namespace"> 
<xsd:import schemaLocation="Messages.xsd" namespace="namespace"/> 
<xsd:import schemaLocation="DomainTypes.xsd" namespace="namespace"/> 
<xsd:import schemaLocation="StreamBody.xsd" namespace="namespace"/> 
</xsd:schema> 

更新:如何生成代理文件

svcutil -noconfig -namespace:*,ServiceNameSpace -serializer:datacontractserializer "Service.wsdl" "DomainTypes.xsd" "Messages.xsd" "StreamBody.xsd" 

所有文件應在同一文件夾中。

+0

生成的.cs文件是否應包含datacontracts?使用'WSDL.exe',.cs包含所有可以編程的XSD(DataContract類)和Service(ServiceContract)。當我嘗試這個(svcutil)時,它只給了ServiceContract,如果你要使用這個.cs,那麼你將如何編寫DataContract類(它們只在XSD中)? svcutil調用出了問題。 – lko

+0

是的,它將擁有所有合同 –

+0

你是否已將所有的xsd文件加入到svcutil中,並且他們的鏈接也應該在wsdl中預先登錄 –