2013-06-20 49 views
1

得到這個錯誤:嘗試使用WS-Metadata Exchange從'net.pipe://localhost/abc.svc'下載元數據。此URL不支持同時通過SvcUtil工具生成代理DISCO

"Attempting to download metadata from 'net.pipe://localhost/abc.svc' using WS-Metadata Exchange. This URL does not support DISCO." 

該服務是無誤差&與http做工精細早期編譯。 生成的wsdl在net.pipe也可以正常工作,即使在使用svcutil生成代理時發生錯誤也沒有問題。

爲了確保其生成的新文件生成,我刪除了所有舊文件&然後使用svcutil生成文件,然後使用它們。它給出相同的錯誤,並且還會生成在使用服務時沒有問題的文件。

我只是感到困惑,爲什麼這個錯誤是存在的時候,每件事情都很好。

+0

您是否擁有mex端點的服務? '' – Tim

+0

@Tim,我的mex端點類似於

回答

1

Pranav,

您的mex端點是正確的。當您使用netNamedPipeBinding或netTcpBinding時,您需要在服務和IIS中進行一些設置。

參考Hosting WCF service with netTcpBinding or netNamedPipeBinding in IIS

+0

這是真正有用的文章+1。我嘗試過,但錯誤並沒有停止。最讓我感到困擾的是,雖然在生成代理時存在錯誤,但生成文件並在使用時按預期成功運行。我希望我知道爲什麼會出現錯誤。 –

0

這不是錯誤消息。我會說只是信息,甚至沒有警告...

我想你有類似下面的配置,並嘗試在net.pipe上運行svcutil。

<service name="Service" ...> 
     <host> 
      <baseAddresses> 
      <add baseAddress="net.pipe://localhost/" /> 
      </baseAddresses> 
     </host> 
     <endpoint address="Service" 
        binding="netNamedPipeBinding" 
        contract="IService" /> 
     <endpoint address="Service/mex" 
        binding="mexNamedPipeBinding" 
        contract="IMetadataExchange" /> 
    </service> 
    ... 
    <serviceMetadata httpGetEnabled="False" /> 

SvcUtil工具會給消息,如 「此URL不支持DISCO」,仍然成功地生成文件

現在你可以改變serviceMetadata到

<serviceMetadata httpGetEnabled="True" httpGetUrl="http://localhost:8182/Service/mex" /> 

和運行例如

svcutil.exe /t:code /l:cpp /ser:Auto http://localhost:8182/Service/mex 

它將生成與在net.pipe上運行相同的客戶端代理代碼,但現在以下輸出...

Attempting to download metadata from 'http://localhost:8182/Service/mex' using WS-Metadata Exchange or DISCO. 
相關問題