我的服务托管在 IIS7 上,启用了 net.tcp 协议。当我从 IIS 浏览服务时,我可以看到服务页面及其 tcp 地址,但如果我将该地址用于 WCF 测试客户端或任何应用程序作为服务参考我在 wcf 客户端中出现此错误
Error: Cannot obtain Metadata from http://localhost:808/MyService/MyService.svc?wsdl
If this is a Windows (R) Communication Foundation service to which you have access,
please check that you have enabled metadata publishing at the specified address.
For help enabling metadata publishing,
please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455
WS-Metadata Exchange Error
URI: http://localhost:808//MyService/MyService.svc?wsdl
Metadata contains a reference that cannot be resolved:
'http:/localhost:808/MyService/MyService.svc?wsdl .
There was no endpoint listening at
'http:/localhost:808/MyService/MyService.svc?wsdl that could accept the message.
This is often caused by an incorrect address or SOAP action. See InnerException,
if present, for more details.
The remote server returned an error: (404) Not Found.HTTP GET Error
URI: http:/localhost:808/MyService/MyService.svc?wsdl
The HTML document does not contain Web service discovery information.
当我将 net.tcp 地址放入 wcf 客户端时,我很惊讶为什么错误仅与 http 有关
我的服务配置是
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0"/>
<httpRuntime maxRequestLength="102400" />
</system.web>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="TcpBinding" maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
closeTimeout="10:00:00" sendTimeout="10:00:00" openTimeout="10:00:00"
receiveTimeout="10:00:00"
maxReceivedMessageSize="2147483647" portSharingEnabled="true" >
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None"/>
<reliableSession enabled="true" inactivityTimeout="10:00:00" />
</binding>
</netTcpBinding>
</bindings>
<services>
<service behaviorConfiguration="MyService.MyServiceBehaviour"
name="MyService.MyService">
<endpoint address="" binding="netTcpBinding" bindingConfiguration="TcpBinding"
name="EndPointTCP" contract="MyService.IMyService" isSystemEndpoint="false" />
<endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyService.MyServiceBehaviour">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<directoryBrowse enabled="true" showFlags="Date, Time, Size, Extension, LongDate"
/>
</system.webServer>
</configuration>