无法从客户端计算机访问WCF服务
服务(WCF和Windows)的基地址是
net.tcp://localhost:8010/WCFService.Service1/
现在,当我向VS-2005上的客户端项目添加服务引用时,它会更新我的app.config文件
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="netTcpEndPoint" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" transactionFlow="false"
transferMode="Buffered" transactionProtocol="OleTransactions"
hostNameComparisonMode="StrongWildcard" listenBacklog="10"
maxBufferPoolSize="524288" maxBufferSize="65536" maxConnections="10"
maxReceivedMessageSize="65536">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
<message clientCredentialType="Windows" />
</security>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost:8010/WCFService.Service1/"
binding="netTcpBinding" bindingConfiguration="netTcpEndPoint"
contract="Client.Service1.IService1"
name="netTcpEndPoint">
<identity>
<servicePrincipalName value="host/server17.domain.com" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
并将Service1.map文件添加为
<?xml version="1.0" encoding="utf-8"?>
<ServiceReference>
<ProxyGenerationParameters
ServiceReferenceUri="net.tcp://server17:8010/WCFService.Service1/"
Name="Service1"
NotifyPropertyChange="False"
UseObservableCollection="False">
</ProxyGenerationParameters>
<EndPoints>
<EndPoint
Address="net.tcp://localhost:8010/WCFService.Service1/"
BindingConfiguration="netTcpEndPoint"
Contract="Client.Service1.IService1"
>
</EndPoint>
</EndPoints>
</ServiceReference>
当我调用任何服务方法时,我收到错误说明
无法连接到net.tcp:// localhost:8010 / WCFService.Service1 /。 连接尝试持续时间跨度为00:00:02.0063936。 TCP 错误代码10061:因为目标无法建立连接 机器主动拒绝它127.0.0.1:8010。
至少它应该是net.tcp://server17:8010/WCFService.Service1/
我已尝试在客户端项目中将localhost
替换为server17
但没有运气
我应该改变什么才能让它发挥作用?请帮忙。
这是我的WCF服务的App.config,它与windows服务相同 app.config:根据Tim的要求
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<compilation debug="true" />
</system.web>
<system.serviceModel>
<services>
<service behaviorConfiguration="WCFService.ServiceBehavior"
name="WCFService.Service1">
<endpoint address="" binding="netTcpBinding" bindingConfiguration=""
name="netTcpEndPoint" contract="WCFService.IService1" />
<endpoint address="mex" binding="mexTcpBinding" bindingConfiguration=""
name="mexTcpEndPoint" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="net.tcp://localhost:8010/WCFService.Service1/" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WCFService.ServiceBehavior">
<serviceMetadata httpGetEnabled="False" />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
答案 0 :(得分:1)
猜测我会检查三件事:
将服务引用添加到客户端时,是从net.tcp://localhost:8010/WCFService.Service1/
添加服务引用,还是从net.tcp://server17:8010/WCFService.Service1/
添加服务引用?
如果您要从server17添加它,请尝试使用服务器的完全限定名称 - 即server17.mydomain.com或其他任何名称。
连接错误可能与您正在使用的端点地址有关 - 客户端传入的serverPrincipalName为“host / server17.domain.com”,但您正在尝试连接到localhost。 / p>
不保证上述任何一项是根本原因,但它为您提供了一个开始的地方。
修改强>
您可以在baseAddress元素中指定locahost,但不要在endpiont元素的address属性中指定任何内容。这可能就是为什么它仍然会转向localhost。
修改服务的配置文件,将baseAddress更改为:
<baseAddresses>
<add baseAddress="net.tcp://server17:8010/WCFService.Service1/" />
</baseAddresses>
或删除baseAddresses并指定端点中的地址:
<endpoint address="net.tcp://server17:8010/WCFService.Service1/"
binding="netTcpBinding"
bindingConfiguration=""
name="netTcpEndPoint"
contract="WCFService.IService1" />
试一试。