我有我的服务托管在IIS7与net.tcp作为启用protocol.When我浏览从IIS的服务,我可以看到服务页面和它的tcp地址,但如果我使用该地址与WCF测试客户端或任何应用程序作为服务引用我得到这个错误在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>
如果你试图添加服务引用,那么httpGetEnabled应该在你的服务行为中为真 –
@SanjayRabadiya嗯,我不认为它需要TCP绑定。因为我不希望我的服务在http协议上访问。 – TRS
我认为服务使用http绑定。 –