【问题标题】:WCF endpoint deployment errorWCF 终结点部署错误
【发布时间】:2013-04-13 03:29:59
【问题描述】:

我创建了 2 个 WCF 端点,服务端点驻留在桌面应用程序上(IP 地址为 10.8.20.175);客户端端点驻留在 Web 托管的应用程序上。

这是服务端点配置

<services>
  <service behaviorConfiguration="NotificationServiceBehavior"
    name="NotificationService">
    <endpoint address="" binding="netTcpBinding" contract="INotificationService" />
    <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
    <host>
      <baseAddresses>
        <add baseAddress="net.tcp://localhost:3337/NotificationService" />
      </baseAddresses>
    </host>
  </service>
</services>

这是客户端端点配置

<system.serviceModel>
<client>
  <endpoint address="net.tcp://10.8.20.175:3337/NotificationService"
    binding="netTcpBinding" contract="INotificationService"
    name="NetTcpBinding_INotificationService" />
</client>
<bindings>
  <netTcpBinding>
    <binding sendTimeout="00:10:00" maxReceivedMessageSize="1000000" name="NetTcpBinding_INotificationService"/>
  </netTcpBinding>
</bindings>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

请注意,在端点地址中,我放置了服务端点的实际 IP 地址。当我在 localhost 上测试服务端点和客户端端点之间的通信时,该地址是 localhost:3337 并且通信良好。现在,当我部署端点时,出现以下错误:

套接字连接被中止。这可能是由于处理您的消息时出错或远程主机超出接收超时造成的, 或底层网络资源问题。本地套接字超时为“00:10:00”。

System.Net.Sockets.SocketException:现有连接被远程主机在 System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) at System.ServiceModel 处强行关闭.Channels.SocketConnection.ReadCore(Byte[] buffer, Int32 offset, Int32 size, TimeSpan timeout, Boolean close)

日志说连接是被远程主机强行关闭的,也就是说客户端确实发送了请求,到达了服务端?在这一点上我很困惑。我不确定客户端端点是否可以到达服务端点。

顺便说一句,从客户端端点机器,我可以ping服务端点的机器,也可以在3337端口上远程登录到远程机器。

【问题讨论】:

    标签: wcf endpoint


    【解决方案1】:

    根据我的经验,这表明您的服务已被客户联系并激活。然而,在调用过程中发生了一些事情,导致服务的回复被终止。

    最好的检查方法是为您的服务打开WCF tracing。这应该有助于您更好地了解服务器端正在发生的事情。

    【讨论】:

    • 我在服务端和客户端都打开了 WCF 跟踪。但是,我只在客户端获得了日志文件。我认为的原因是因为客户端在网络主机应用程序上,但服务端在桌面应用程序上。有谁知道如何在桌面应用程序上打开 WCF 跟踪?谢谢!
    • 我的答案中为链接选择的答案应该具有您 app.config 所需的所有配置。无论您运行的是 Web 应用程序还是桌面应用程序,配置都应该相同。您是否以无权访问您尝试写入文件的位置的用户身份执行桌面应用程序?编辑:您还可以在您的服务器上使用 Wireshark 或 Netmon 之类的工具来确认您的应用程序之间是否存在聊天。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2018-02-03
    • 2011-04-11
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    相关资源
    最近更新 更多