gpt4 book ai didi

wcf - 无法将服务引用添加到 net tcp wcf 服务

转载 作者:可可西里 更新时间:2023-11-01 02:36:19 28 4
gpt4 key购买 nike

我在本地计算机上托管了一个 WCF 服务作为 Windows 服务。现在我正尝试在客户端中添加服务引用(再次在我的本地开发机器上),但出现错误

Metadata contains a reference that cannot be resolved: 'net.tcp://localhost:8523/Service1'. Could not connect to net.tcp://localhost:8523/Service1. The connection attempt lasted for a time span of 00:00:02.0011145. TCP error code 10061: No connection could be made because the target machine actively refused it

我检查过 Windows 防火墙没有阻止端口 8523。我什至在 Windows 防火墙中创建了一个新规则以允许运行 8523 端口。但是当我运行 netstat -sp tcp 时,我似乎找不到端口 8523。但是我可以看到 Serice1 服务的状态在服务中设置为 START。这是配置文件

服务库

<system.serviceModel>
<services>
<service 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" />
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="false" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>

Windows 服务项目中的配置看起来完全相同。

最佳答案

Michael,这是我通常用于 WCF 服务的 net.tcp 绑定(bind)。

    <bindings>
<netTcpBinding>
<binding name="TcpBinding"
receiveTimeout="Infinite"
sendTimeout="Infinite"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<reliableSession inactivityTimeout="Infinite"/>
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>

尝试将其添加到您的配置中:

<service name="WcfServiceLibrary1.Service1">   
<endpoint
address=""
binding="netTcpBinding" bindingConfiguration="TcpBinding"
contract="WcfServiceLibrary1.IService1">
...

此外,我的服务在 ServiceAccount.LocalSystem 下运行。

检查

netstat -ap tcp

如果服务正在监听。

编辑:下面是我的服务类。请注意,Windows 服务的当前目录以编程方式设置为 BaseDirectory。 ,即可执行文件的目录。

public class Service : ServiceBase
{
public static void Main()
{
Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
ServiceBase.Run(new Service());
}

...
}

关于wcf - 无法将服务引用添加到 net tcp wcf 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957158/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com