使用另一个用户名启动服务后,WCF 给出错误 10061

Posted

技术标签:

【中文标题】使用另一个用户名启动服务后,WCF 给出错误 10061【英文标题】:WCF gives error 10061 after starting the service with another username 【发布时间】:2017-12-13 21:44:45 【问题描述】:

我有一项服务在专用 Windows 服务器上运行了一年多。 在我的客户端计算机上,我有一个使用 WCF 与此服务通信的 winforms 客户端

这已经工作了一年多没有问题了。 但现在公司政策发生了变化,我不得不使用域\管理员帐户以外的另一个帐户启动服务。 使用的帐户也是域帐户,并且具有管理员权限。

但由于我的 winforms 客户端无法再连接到它,我总是收到此错误:

---------------------------
Could not connect to net.tcp://localhost:8001/CommunicationService. 
The connection attempt lasted for a time span of 00:00:02.0176000. 
TCP error code 10061: No connection could be made because the target machine actively refused it 127.0.0.1:8001. 
---------------------------

所以我想我需要为某些东西赋予一些权利,但我在这里不知道。 有人能解释一下我需要做什么才能让它再次工作吗?

请记住,服务和客户端都没有以任何方式更改,并且在我不得不使用另一个用户帐户启动服务之前,它运行良好。 所以我认为这不应该是防火墙问题,也不是我的代码中的任何错误。

编辑: 这是服务的配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
   <system.serviceModel>
      <services>
         <service name="CommunicationService" behaviorConfiguration="debug">
            <endpoint address="net.tcp://localhost:8001/CommunicationService" binding="netTcpBinding" contract="ICommunication"/>
         </service>
      </services>
    <bindings>
      <netTcpBinding>
        <binding>
          <security mode="None"></security>
        </binding>
      </netTcpBinding>
    </bindings>
      <behaviors>
        <serviceBehaviors>
          <behavior name="debug">
            <serviceDebug includeExceptionDetailInFaults="true" />
          </behavior>
        </serviceBehaviors>
      </behaviors>
   </system.serviceModel>
</configuration>

这是我客户的配置:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <system.serviceModel>
    <client>
      <endpoint address="net.tcp://192.0.137.198:8001/CommunicationService" binding="netTcpBinding" contract="ICommunication"/>
    </client>
    <bindings>
      <netTcpBinding>
        <binding sendTimeout="00:00:05">
      <security mode="None"></security>
    </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>  
</configuration>

编辑:

如果我在与服务相同的计算机上运行客户端,则它可以正常工作。 我试过这个

netsh http add urlacl url=http://127.0.0.1:8001/MyUri user=domain\user 

但这里没有帮助。我在这里找到了这个命令HTTP could not register URL http://+:8000/HelloWCF/. Your process does not have access rights to this namespace,但我不知道我需要使用什么参数

【问题讨论】:

【参考方案1】:

让它工作。 看来我的客户端配置文件错误,它的端点设置为 127.0.0.1 而不是指向正确的服务。

【讨论】:

以上是关于使用另一个用户名启动服务后,WCF 给出错误 10061的主要内容,如果未能解决你的问题,请参考以下文章

WCF 错误:405 方法不允许

WCF 给出不安全或不正确安全的故障错误

C#如何强制等待连接到 WCF 服务

WCF 服务更新给出错误

使用 AngularJs 调用 WCF REST 服务给出错误

WCF 服务命名管道故障