Add Service Reference 有两种方法可以了解服务:
Discover
按钮:搜索当前解决方案中的项目。
Go
按钮:连接到地址框中的服务并检索元数据。
在单击 之前,您需要实际运行该服务Go
。
编辑
我刚刚从您的屏幕截图中注意到您正在尝试连接到 net.tcp URL。我认为在 MEX 中使用 http 更为常见。你的 app.config 看起来像:
<services>
<service behaviorConfiguration="WcfServiceLibrary1.Service1Behavior"
name="WcfServiceLibrary1.Service1">
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
contract="WcfServiceLibrary1.IService1">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8523/Service1" />
<add baseAddress="http://localhost:8524/Service1" />
</baseAddresses>
</host>
</service>
</services>
请注意 http 基地址的不同端口号。然后,您将在“添加服务参考”工具中使用“http://localhost:8524/Service1”。您还应该能够使用您的网络浏览器连接到它。
要允许通过 http GET(例如从浏览器)交换元数据,您还需要通过行为启用它:
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
我不确定添加服务参考工具是否关心这一点。
即使您不想允许 http get 访问 (httpGetEnabled="False"),您仍然需要包含此行为以启用 MEX(除非您以编程方式添加它)。