【问题标题】:Error "An attempt was made to access a socket in a way forbidden by its access permissions"错误“试图以访问权限禁止的方式访问套接字”
【发布时间】:2017-10-06 13:05:14
【问题描述】:

运行 WCF 服务以在本地计算机上进行测试。在 App.config 我有:

<system.serviceModel>
    <services>
      <service name="Pizza.Services.PizzaService">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8733"/>
          </baseAddresses>
        </host>
        <endpoint address="pizza"
                  binding="basicHttpBinding"
                  contract="Pizza.Services.IPizzaService">

        </endpoint>
        <endpoint address="net.tcp://localhost:8733/pizza"
                  binding="netTcpBinding"
                  contract="Pizza.Services.IPizzaService">
        </endpoint>
      </service>
    </services>

如果我从 VS2015 运行应用程序(作为普通用户或管理员),我会得到:

TCP 错误(10013:试图以某种方式访问​​套接字 被其访问权限禁止)在侦听 IP 时发生 端点=0.0.0.0:8733。 ---> System.Net.Sockets.SocketException:一个 试图以访问禁止的方式访问套接字 权限

现在我的同事含糊地解释了 Windows 10 的一项安全功能,该功能将阻止用户获取随机端口并将其提供给某些服务。所以我以管理员身份打开命令提示符并做了:

netsh http add urlacl url=http://+:8733/ user=Everyone

还是同样的错误。

我注意到类似的问题,但我觉得它们都没有解决我的问题。

编辑:我忘记提及的另一件事是我尝试关闭防火墙和防病毒但没有成功。

【问题讨论】:

  • 您拥有的错误消息文本看起来与 netsh urlacl 权限不同。你能帮我理解你的配置吗?您是否定义了侦听相同端口 8733 的端点(http 和 net.tcp)?它允许吗?尝试删除其中一个(net.tcp)并运行应用程序
  • 感谢您的评论。一分钟前注意到了。

标签: c# .net sockets wcf


【解决方案1】:

端点绑定把事情搞砸了。我已经更改了端口:

<endpoint address="net.tcp://localhost:8733/pizza"
                  binding="netTcpBinding"
                  contract="Pizza.Services.IPizzaService">
</endpoint>

从 8733 到 8732,它可以工作。基本上,两个端点试图使用同一个端口。

【讨论】:

  • 我刚刚遇到了同样的问题。我有一个 wsHttpBinding 和 mexHttpBinding 在同一个端口(特别是 9991)上监听。我将其中一个更改为 9992 并解决了问题。
【解决方案2】:

重新启动 Visual Studio 通常可以解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-15
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多