gpt4 book ai didi

WCF 服务调用使用 basicHttpBinding 但因 netTcpBinding 失败

转载 作者:行者123 更新时间:2023-12-04 17:57:28 27 4
gpt4 key购买 nike

(请阅读评论,因为我有一个修复)
你好,

我创建了一个 WCF 服务,我使用 .net 4.0 在 Windows 7 上的 IIS 7.5 中托管
该服务托管在 http 和 net.tcp 上。

  • net.tcp://localhost:42/Service/MyService.svc
  • http://localhost:43/Service/MyService.svc

  • 我已经使用 WcfTestClient 测试了我的服务,它似乎可以通过 basicHttp 和 netTcp 正常工作。

    但是,当我尝试通过我的 ASP.NET 网站使用此服务时,我在尝试通过 nettcp 时收到错误消息

    我的客户端端点如下所示
    <system.serviceModel>
    <bindings>
    <basicHttpBinding>
    <binding name="Generic_HttpBinding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
    <security mode="None"/>
    <readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
    </binding>
    </basicHttpBinding>
    <netTcpBinding>
    <binding name="Generic_Binding" sendTimeout="00:01:00" receiveTimeout="00:01:00" maxBufferPoolSize="2000000" maxReceivedMessageSize="2000000000">
    <security mode="None"/>
    <readerQuotas maxDepth="2000000" maxStringContentLength="2000000" maxArrayLength="2000000" maxBytesPerRead="2000000" maxNameTableCharCount="2000000"/>
    </binding>
    </netTcpBinding>
    </bindings>
    <client>
    <endpoint name="EndPointHttp" address="http://localhost:43/Service/MyService.svc" binding="basicHttpBinding" bindingConfiguration="Generic_HttpBinding" contract="NameSpace.Services.Contracts.IService"></endpoint>
    <endpoint name="EndPoint" address="net.tcp://localhost:42/Service/MyService.svc" binding="netTcpBinding" bindingConfiguration="Generic_Binding" contract="NameSpace.Services.Contracts.IService"></endpoint>
    </client>

    现在我以完全相同的方式调用服务,只是交换我的端点名称
    var factory = new ChannelFactory<IService>(SuppliedEndpointName);
    factory.Open();
    var proxy = factory.CreateChannel();
    var result = proxy.SomeServiceMethod();

    如果我通过这个方法basicHttpBinding它完美地工作。
    第二次我交换到 nettcp,我立即收到此错误:

    Exception: The socket connection was aborted. This could be caused by an error processing your message or a receive timeout being exceeded by the remote host, or an underlying network resource issue. Local socket timeout was '00:01:00'.

    Inner Exception: An existing connection was forcibly closed by the remote host

    Error Code: 10054



    请任何人都可以帮助我,这让我发疯。
    我肯定安装了 WCF HTTP 激活和非 HTTP 激活功能。
    我已将我的绑定(bind)设置为不同端口上的 HTTP 和 net.tcp。
    我已在 IIS 中将启用的协议(protocol)设置为 http,net.tcp。
    我已禁用我的防火墙。
    我已经为 .net 4.0 运行了 aspnet_regiis -i

    帮助!

    我终于发现将我的安全模式更改为传输可以解决问题。
    但是我的服务将其安全模式设置为无。
    那么为什么我的客户端只能在安全模式传输上工作呢?

    最佳答案

    netTcpBinding默认传输安全性为 签名和加密 .尝试删除 security元素(<security mode="None"/>)。



    低于 8000(肯定低于 1024)的端口通常不能安全地用于服务。尝试使用安全端口。

    关于WCF 服务调用使用 basicHttpBinding 但因 netTcpBinding 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5670015/

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