相关疑难解决方法(0)

WCF Silverlight客户端获取404未找到的轮询消息响应

最终WCF双工Silverlight 4客户端开始获取404 Not Found轮询消息的错误,在轮询从WCF服务发送到Silverlight客户端之后立即发生,有时这种情况发生在第二次轮询中,有时连接工作数小时甚至数天,但大多数在第一分钟失败.

!有趣的是,这个问题就像使用MaxMessagesPerPoll双工模式时已知的Silverlight 4错误一样,这里这里描述解决方案,但我正在使用SingleMessagePerPoll模式.ANyway我ClientStack按照建议尝试使用,但没有任何改变.

一般流程:

  1. SL客户端执行WCF服务方法,收到响应
  2. 然后, SL客户端立即开始向服务发送轮询消息,然后获取第二个或Ns轮询消息的异常

    System.Net.WebException:远程服务器返回错误:NotFound

  3. Fiddler仅显示404轮询消息的空响应
  4. 然后客户端Channel Faulted事件提出

我试图在出现这样的故障后重新连接SL客户端,单个重新连接重试流程:

  1. 处理Faulted事件
  2. 取消订阅所有频道活动,例如 Closed/Closing/Opened/Opening
  3. 使用正确的方式关闭通道 try { close } catch { abort }
  4. 所有下面的新线程民意调查线程:(我觉得这个工作稍微稳定一点 - 看看这篇文章)
  5. 等待45-70秒
  6. 使用相同的DuplexChannelFactory<T>实例创建新通道,仅为了记录目的订阅所有通道事件
  7. 执行WCF服务方法

1-10次重试(~1-10分钟)后,客户端最终连接到服务器并继续正常轮询.

在WCF服务日志中,我看到它获得了所有cleint请求,没有任何异常处理,因此似乎Silverlight客户端发生了一些事情.

基本信息:

  • .NET Framework 4.0
  • PollingDuplex
  • 异步WCF方法
  • IIS 6.0托管WCF服务
  • Silverligth 4客户
  • 客户端操作系统:Windows XP SP2
  • 服务器操作系统:Windows 2003 R2 SP2
  • NTLM身份验证
  • DuplexMode:SingleMessagePerPoll
  • 还有一个其他WCF服务在我的服务开始工作之前执行请求/回复,它不使用双工连接
  • 在SL客户端服务上,我将所有内容记录到UI中,以便查看所有事件流并为每个特定事件留出时间 …

.net silverlight wcf polling pollingduplexhttpbinding

7
推荐指数
1
解决办法
1286
查看次数