问题标签 [pollingduplexhttpbinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
253 浏览

wcf - WCF & Silverlight >> pollingDuplexHttpBinding >> 在浏览器关闭时从 silverlight 调用 Web 服务

我有使用 pollingDuplexHttpBinding 绑定的 WCF 服务器和 Silverlight 客户端。

我想关闭连接并调用 EndSession 操作方法,它将用户从

活跃用户列表,并关闭会话 ( IsTerminating = true )

据此您不能在 Application_Exit 事件上调用 wcf 操作,它也给出了一个

对我来说似乎“2很吵”的解决方案,

我在这里有什么选择?这是唯一的方法吗?

1)使用链接解决方案?

2) 服务器每 X 秒运行一个方法来检查双工对象状态是否处于活动状态?

3)其他?!简单的内置解决方案 ? 为什么 Silverlight 是地狱?!

0 投票
0 回答
241 浏览

wcf - Silverlight 4 WCF 轮询双工在 IIS Express 中不起作用

我有一个silverlight 4 聊天程序,它使用带有pollingDuplexHttpBinding 的WCF 服务。

该程序工作正常: * Cassini * IIS 本地 Web 服务器 * 所有非双工 WCF 服务在任何设置下都可以正常工作

但它在 IIS 7.5 Express 中不起作用。进行了调用,但给出了 500 HTTP 错误,并且没有任何反应(没有抛出异常,程序只是忽略它)

这是我的 Web.Config

0 投票
1 回答
272 浏览

wcf - 第二个 wcf 轮询双工服务调用太长

我对 WCF 服务有奇怪的问题。我使用 pollingDuplexBinding 和 Silverlight 客户端。此代码在 web.config 中注册了绑定

在第一次调用时一切正常 - 服务快速返回数据。但是第二次调用执行超过 5 次。如果我设置了大超时,结果将返回给客户端,否则它会抛出 TimeoutException。我正在调用的 WCF 方法什么都不做 - 只返回短字符串。

WCF 跟踪说,第二个服务调用仅比客户端调用此方法晚 5 分钟,并且执行速度很快。我使用这些服务属性:

这是客户端代码

0 投票
0 回答
293 浏览

wcf - WCF:随机不响应

我有一个特殊的问题,客户端请求随机没有得到对 WCF 服务调用的响应。

设置是一个 Silverlight 5 应用程序调用 WCF 服务,使用 HTTP 和 PollingDuplex 绑定。SL 在加载时发出许多请求(20 秒内 20+),并且时不时地没有收到对其中一个或两个的响应。需要明确的是,完全相同的请求在 90% 的时间内都有效,如果我刷新页面,所有请求都可以得到响应。

错误不能是实际发送的请求。我也使用 Fiddler 来验证这一点,因为我看到了正在发出的请求(确保内容与之前成功的请求相同),但对请求没有响应。最终客户端超时请求。WCF 服务托管在 IIS7 中,并且我在两者上都启用了诊断和日志记录。在 WCF 服务器跟踪日志中,我只看到客户端请求超时时记录的消息。在客户端超时时,它在“处理消息”活动下记录了以下异常操作:“可用字节数与 HTTP Content-Length 标头不一致。可能存在网络错误或客户端可能正在发送无效请求。” 这就好像 HTTP 的主体没有通过 WCF(我不知道是否可以在传递给 WCF 处理程序之前记录 IIS 接收到的完整请求?)。正如我所说,使用 Fiddler 我可以看到完整的消息是有效的(请注意,当 Fiddler 没有嗅探流量时也会发生这种行为,所以我已经排除了 Fiddler 的问题)。

通常,“处理消息”活动具有“收件人:处理操作xxx

就像我说的,这发生在 Http 和 PollingDuplex 服务上,在我的开发盒以及生产 Web 服务器上。也发生在不同的端点上,我认为它与 WCF 节流行为无关,因为它发生了

任何信息或帮助将不胜感激,无论是我可以收集以帮助诊断的其他信息还是任何提示。

0 投票
2 回答
1430 浏览

.net - WCF Silverlight 客户端收到 404 未找到轮询消息的响应

最终,WCF 双工 Silverlight 4 客户端开始收到404 Not Found轮询消息错误,轮询从 WCF 服务发送到 Silverlight 客户端后,有时会在第二轮轮询时发生这种情况,有时连接工作数小时甚至数天,但大部分在第一分钟失败。

!有趣的是,这个问题就像使用MaxMessagesPerPoll双工模式时已知的 Silverlight 4 错误一样,这里这里描述了解决方案,但我使用的是SingleMessagePerPoll模式。无论如何,我尝试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 服务日志中,我看到它得到了所有客户端请求,没有任何异常处理,所以 Silverlight 客户端似乎发生了一些事情。

基本信息:

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

客户:

服务器:

  • WCF、PerSession、多线程
  • 一切都是线程安全的
  • 执行时没有服务器服务异常
  • 很多日志记录,所以我看到了服务上发生了什么
  • 所有 WCF 跟踪都使用 switchValue 启用All,没有任何可疑之处
0 投票
1 回答
544 浏览

wcf - WCF 轮询双工绑定的可靠性

我有一个用于 silverlight 客户端的 WCF 轮询双工服务。我想为服务添加可靠性,但首先我得到了这个错误。

传出消息的消息版本 (Soap11 (http://schemas.xmlsoap.org/soap/envelope/) AddressingNone (http://schemas.microsoft.com/ws/2005/05/addressing/none)) 不匹配编码器(Soap12 (http://www.w3.org/2003/05/soap-envelope) Addressing10 (http://www.w3.org/2005/08/addressing))。确保绑定配置为与消息相同的版本。

我更改了配置文件,现在出现以下错误。WCF 轮询双工是否支持可靠性?

服务参考配置中无法识别的元素“reliableSession”。请注意,Silverlight 中只有一部分 Windows Communication Foundation 配置功能可用。

0 投票
1 回答
234 浏览

wcf - Windows Phone 7 WCF 回调轮询双工绑定错误

我在 Windows Phone 7 项目中使用 WCF。我想在我的项目中使用 WCF 的回调服务。但是,在项目中使用 wsDualHttpBinding 时出现错误。所以,我用谷歌搜索了很多。所以,在我之后的结论是在 Windows 手机应用程序中使用 PollingHttpBinding。所以,我继续使用 PollingDuplex 工作。我从以下路径使用服务器端 WCF 服务中的 PollingDuplex 引用:“C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Server\System.ServiceModel.PollingDuplex.dll”。它运行良好,还能够通过 SLSVCUTIL.EXE 使用该服务。但是当我尝试将 PollingDuplex ("C:\Program Files (x86)\Microsoft SDKs\Silverlight\v4.0\Client\System.ServiceModel.PollingDuplex.dll") 引用包含到我的 Windows Phone 7 客户端代码时,

“类型 Universe 无法解析程序集:System.ServiceModel.Extensions,Version=2.0.5.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”

请帮助我解决此错误。

系统规格:

Windows 8(64 位)
Visual Studio 2012
Windows Phone 8 SDK
Silverlight 4.0

0 投票
0 回答
328 浏览

c# - 使用 Pollingduplex 和 NTLM 重新启动 WCF Servicehost

我有 2 个 WCF 服务,托管在一个 winform 应用程序中:1 个公开基本 http 绑定,1 个公开 IClientAccessService (webhttpbinding) 和一个具有 PollingDuplexHttpBinding 的接口和用于 silverlight 5 客户端的 NTLM 安全性。在某些情况下,pollingduplex 端点未正确打开,导致无法连接客户端。为了能够检测到这一点,浏览器应用程序中的 Silverlight 正在轮询接口,当收到响应时,它会通过 tcp 套接字通知服务。

当我没有收到浏览器外应用程序的通知时,我想重新启动 wcf 服务。通过在两个服务上调用 servicehost.close(),然后在 servicehost.open() 之后调用。

奇怪的是使用 basichttp 绑定打开/关闭服务成功,但是使用轮询双工绑定打开服务失败并出现 Channeldispatcher 异常:URI 的注册已经存在,http://localhost:18524/IService/因为端口仍然被关闭和中止声明服务主机。

我一直在玩 pollingduplex 通道的打开/关闭超时,延迟关闭/打开之间的时间,但没有效果。

有人知道如何释放 pollingduplex 连接的端口吗?

感谢帮助。

打开关闭代码: public void StartServices() { StopServices();

轮询双工通道的配置: