通过svcutil:
生成代理时出现此错误"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 :(得分:1)
Pranav,
你的mex端点是对的。当您使用netNamedPipeBinding或netTcpBinding时,您需要在服务和IIS中进行一些设置。
参考Hosting WCF service with netTcpBinding or netNamedPipeBinding in IIS
答案 1 :(得分:1)
那不是错误信息。我只会说INFO,甚至不是警告......
我猜你有类似下面的配置,并尝试在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.