【问题标题】:WCF Session problemWCF 会话问题
【发布时间】:2010-11-05 18:12:20
【问题描述】:

我是 WCF 的新手,不太了解。通过使用示例代码,我通过远程处理尝试了 WCF...

它可以正常工作几分钟,但如果我离开客户端而不访问 WCF 服务器,我会收到这样的异常......

异常:无法连接到远程服务器。

内部异常:

System.Net.Sockets.SocketException: 连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立连接失败,因为连接的主机没有响应122.165.27.38:80

在 System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)

在 System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP)

在 System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& 套接字, IPAddress& 地址, ConnectSocketState 状态, IAsyncResult asyncResult, Int32 超时, Exception& 异常)

堆栈跟踪:

在 System.Net.HttpWebRequest.GetRequestStream()

在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数)

在 TeleMailer.TeleMailer.cbxtmuname_SelectedIndexChanged(Object sender, EventArgs e)

来源:

系统

异常:服务器无法处理请求。 ---> 通信对象 System.ServiceModel.Channels.ServiceChannel 不能用于通信,因为它处于故障状态。

内部异常:

堆栈跟踪:

在 System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)

在 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] 参数)

在 TeleMailer.Server.Service.get_path()

在 TeleMailer.TeleMailer.TeleMailer_Load(Object sender, EventArgs e)

来源:

System.Web.Services

但不是故障状态,也不是关闭!!!

实际上,在我的应用程序中,客户端与服务器通信,服务器又与 WCF 联系并给他做的工作....

现在我使用 Cassini 作为我的服务器。它在几分钟内运行良好,但在近十分钟后它只显示此错误消息....

当它能够连接更多客户端时,我无法理解它是如何进入故障状态的......

是因为会话超时还是什么?如果会话超时,那么从我的服务器或客户端的哪一侧???

任何想法请............

我已经用它坐了一整天,但找不到任何东西!!!

【问题讨论】:

    标签: wcf


    【解决方案1】:

    " 如果我​​离开客户端而不访问 WCF 服务器,我会收到类似 "

    的异常

    可能是由于inactivityTimeout,所以你可以增加它,或者尽快处理你的客户端对象(尝试使用语句)

    你可以按如下方式设置属性

     <reliableSession ordered="true" inactivityTimeout="00:00:05"
                enabled="false" />
    

    【讨论】:

    • 但是如果我不想让非活动超时...如果你能说...
    • 感谢您的回复,我认为这是问题所在,请您回答这个问题...但是如果我不想让不活动超时,那么...我的意思是如果超时应该是无止境的,那么我可以给值 0 还是 wat 是值???如果你能说...
    • 不建议这样做,如果您希望客户端很少或不连续使用服务,您可以在每次客户端请求时创建新实例,有关更多详细信息,请查看此链接 msdn.microsoft.com/en-us/library/…
    【解决方案2】:

    这可能是超时问题,与您在客户端代码中创建 wcf 代理对象时有关。

    看起来您在启动客户端时创建了代理对象,然后重用它。此对象维护与服务器的连接,该连接在 10 分钟后超时。

    更好的方法是在每次需要时使用 using 语句创建一个新的代理对象。

    【讨论】:

      猜你喜欢
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2010-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-01-21
      相关资源
      最近更新 更多