问题标签 [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 投票
2 回答
657 浏览

wcf - 使用 PollingDuplexHttpBinding 关闭会话

我正在使用 WCF PollingDuplexHttpBinding 通道将通知推送到 Silverlight 客户端。在大多数情况下它运行良好,但我正在努力让一些基本的会话管理功能正常工作。

我遇到的最大问题是试图让服务器知道客户端已完成会话并且不再需要任何通知。客户端上的 CloseAsync 调用会阻止通道的客户端仅为该会话发送新通知的请求,并且它还会向服务器发送 CloseSession SOAP 请求。问题是通道的服务器端发回 404 表示它无法识别 CloseSession 操作。据我所见,错误来自 PollingDuplexHttpBinding 通道的内部,并没有弥补到应用程序,因此可以正确处理会话关闭。

有没有其他人遇到过这个问题,也许找到了解决方法?

0 投票
2 回答
1940 浏览

wcf - 在 Silverlight 3 WCF 客户端中接收 NotFound CommunicationException

尝试从 Silverlight 3 调用 WCF 服务时,我收到一个非常无用的 CommunicationException。异常消息是“远程服务器返回错误:NotFound”。每个内部异常都会复制相同的消息。我的设置是否存在可能导致此问题的问题?

这是我的设置。WCF 服务托管在 .NET 4.0 平台上运行的 Windows 服务中。它具有三个端点:

  • 主端点使用 pollingDuplexHttpBinding 绑定,地址为“DashboardService”
  • 元数据交换端点使用 mexHttpBinding 绑定,地址为“mex”
  • 策略提供端点(这需要允许跨域调用)使用 webHttpBinding 绑定并具有地址“”。

这是整个 system.serviceModel 部分:

在 Silverlight 客户端代码中,我添加了一个服务引用,这似乎工作得很好。并且客户端按预期获取服务上的跨域策略。但是,当我调用主要的 DashboardService 方法时,我得到了 CommunicationException,并且永远不会到达我的服务器端方法中的断点。这是通过添加服务引用生成的 Silverlight ClientConfig 文件:

此设置是否有任何问题,或者我需要做任何其他事情才能使轮询双工 HTTP 绑定正常工作?或者您至少知道我如何获得有关问题所在的更多信息吗?

编辑:

我只是尝试通过代码设置客户端和服务器绑定,而不是查看它是否有帮助,但我仍然得到相同的异常。这是服务器代码:

这是客户端代码:

编辑2:

我尝试将客户端代码更改为此,但出现同样的问题:

0 投票
2 回答
1561 浏览

c# - WCF(Silverlight)双工 - 不打服务器

我在 Vista 和 Windows 7 上使用 VS 2008 SP 1 和 Silverlight 3 工具创建了一个嵌入了 Silverlight 项目的 Web 应用程序。

双工服务代码:

双工配置部分:

<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="DuplexServerBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> < serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service behaviorConfiguration="DuplexServerBehavior" name="DuplexServer"> <endpoint address="" binding="wsDualHttpBinding" contract="DuplexServer" /> <endpoint address="mex" 绑定="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>

我在客户端应用程序中设置了一个 Duplex 服务,如下所示:

我已经使用了 Simplex 服务,并且对 Simplex 服务的调用命中了服务器上设置的断点,我可以单步执行。

尽管客户端上没有引发错误,但对 Duplex 服务的调用不会遇到断点。如果我使用 Fiddler 检查 HTTP 流量,我可以看到在初始请求之后触发了数百个 202 请求 - 我假设这些是轮询请求。

初始双工请求:

POST http://localhost/CTC.Test.WCF.Server/DuplexServer.svc HTTP/1.1 Accept: / Content-Length: 665 Content-Type: application/soap+xml; charset=utf-8 UA-CPU:x86 Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;(R1 1.6);SLCC1;.NET CLR 2.0.50727;InfoPath。 2;.NET CLR 3.5.21022;.NET CLR 3.5.30729;.NET CLR 3.0.30618) 主机:cotocovista4.cotoco.local 连接:Keep-Alive 编译指示:无缓存

<s:信封 xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">< s:Header><a:Action s:mustUnderstand="1">urn:IDuplexServer/SendEcho</a:Action><netdx:Duplex xmlns:netdx="http://schemas.microsoft.com/2008/04/ netduplex"><netdx:地址> http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous?id=ae3e3139-0df8-41eb-97db-69c2c48782b7</netdx:地址><netdx: SessionId>43f9e320-cde3-4e21-a748-e5b29c10ee25</netdx:SessionId></netdx:Duplex><a:To s:mustUnderstand="1"> http://cotocovista4.cotoco.local/CTC.Test.WCF .Server/DuplexServer.svc</a:To></s:Header><s:Body><SendEcho><message>Message!</message></SendEcho></s:Body></s:信封> ;

随后的双工请求:

POST http://localhost/CTC.Test.WCF.Server/DuplexServer.svc HTTP/1.1 Accept: / Content-Length: 588 Content-Type: application/soap+xml; charset=utf-8 UA-CPU:x86 Accept-Encoding:gzip,deflate User-Agent:Mozilla/4.0(兼容;MSIE 7.0;Windows NT 6.0;(R1 1.6);SLCC1;.NET CLR 2.0.50727;InfoPath。 2;.NET CLR 3.5.21022;.NET CLR 3.5.30729;.NET CLR 3.0.30618) 主机:cotocovista4.cotoco.local 连接:Keep-Alive 编译指示:无缓存

<s:信封 xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope">< s:Header><a:Action s:mustUnderstand="1"> http://docs.oasis-open.org/ws-rx/wsmc/200702/MakeConnection</a:Action><a:To s:mustUnderstand ="1"> http://cotocovista4.cotoco.local/CTC.Test.WCF.Server/DuplexServer.svc</a:To></s:Header><s:Body><wsmc:MakeConnection xmlns:wsmc ="http://docs.oasis-open.org/ws-rx/wsmc/200702"><wsmc:地址> http://docs.oasis-open.org/ws-rx/wsmc/200702/anonymous? id=ae3e3139-0df8-41eb-97db-69c2c48782b7</wsmc:Address></wsmc:MakeConnection></s:Body></s:Envelope> ;

有谁知道为什么会发生这种情况,我以为当它停止抛出连接异常时我终于解决了最后一个问题......

问候

特里斯

更新:我尝试在以下项目类型中重新创建它:WCF 应用程序、Web 应用程序、Web 项目。我已经成功地实现了使用 WCF 消息作为双工参数的 MS 示例,但我一直在寻找一种使用 WSDL 组装双工 Web 服务的快速方法。

0 投票
1 回答
947 浏览

wcf - WCF、Silverlight:是否可以通过 PollingDuplexHttpBinding 进行请求/回复?

我们已经使用PollingDuplexHttpBinding了一段时间来进行Pub/Sub消息传递。我们有一些不返回结果的方法,这些方法允许客户端订阅一些数据馈送,然后服务通过CallBack合同将数据推回。

刚才我们已经在Request/Reply我们的OperationContract. async Begin() End()由于客户端是 Silverlight 3,因此使用该模式调用这些方法。问题是我们无法使用PollingDuplexHttpBinding. 我们总是收到以下错误(使用客户端堆栈 HTTP 时):

服务器没有提供有意义的回复;这可能是由于合同不匹配、会话过早关闭或内部服务器错误造成的。

使用浏览器堆栈,我们得到HTTP 500: Not Found.

切换到BasicHttpBinding方法Request/Reply时调用完全没问题,但显然Pub/Sub方法不能与此绑定一起使用。

我们可以为每种类型的消息传递使用两个单独的端点,但宁愿不这样做,而且绑定仅支持该Pub/Sub模式对我来说似乎很奇怪(即使这是PollingDuplexHttpBinding.

有人可以帮我解决这个问题吗?可能吗?

0 投票
1 回答
721 浏览

wcf - 如何使用 PollingDuplexHttpBinding 处理客户端断开连接

我正在使用 Silverlight 3 客户端实现 WCF 服务,该客户端使用 PollingDuplexHttpBinding 进行通信。当客户端关闭浏览器而没有先与服务器断开连接时,有哪些处理方法?

我知道它最终会抛出一个 TimeoutException,我可以捕捉到它,但是有没有更好的方法来检测这个?

谢谢。

0 投票
2 回答
494 浏览

silverlight-4.0 - HttpPollingDuplex 的 serverPollTimeout 配置

我正在使用SilverlightHttpPollingDuplex编写纸牌游戏。

我有 4 个单独的 http 双工服务,可以从我的游戏中调用(silverlight 客户端)

1. 聊天服务

2. 认证服务

3. 大堂服务

4.游戏服务

在我在IIS 7.5下托管游戏后,我用Fiddler注意到Silverlight客户端按顺序轮询请求,我的应用程序变得非常慢,因为例如从聊天服务客户端获取消息必须等到其他服务轮询完成。比我为服务更改serverPollTimeout以更快地完成轮询,现在我的游戏运行得更快,但会继续按顺序请求服务。所以问题是

如果有多个轮询服务,是否可以创建客户端代理或配置客户端以并行执行轮询查询?如果不是在我的情况下更改 serverPollTimeout 的好习惯?或者对我来说最好的配置是什么?

在单独的线程中创建代理和调用服务方法没有帮助:(

非常感谢!

0 投票
1 回答
980 浏览

wcf - 在控制台应用程序中使用 wcf 双工服务

我有一个 wcf 双工服务,在 Silverlight 中工作正常。但我想在 Windows 控制台应用程序中使用相同的服务。我的代码如下:

App.config 是“空的”:

它给了我一个错误:

绑定“CustomBinding”不支持创建任何通道类型。这通常表明 CustomBinding 中的 BindingElement 堆叠不正确或顺序错误。堆栈底部需要传输。BindingElements 的推荐顺序是:TransactionFlow、ReliableSession、Security、CompositeDuplex、OneWay、StreamSecurity、MessageEncoding、[...]

你可以帮帮我吗?提前致谢。

0 投票
4 回答
1953 浏览

silverlight - 如何检测断开的双工轮询客户端

使用 HTTP 轮询双工 WCF 通道跟踪了 Tomek Janczuk 的 Pub/sub 示例,但我注意到当客户端通过关闭浏览器断开连接时,服务不会注意到下一次回调。我本来预计会出现异常或其他说明端点不再存在的东西。

您如何知道客户何时离开,从而停止向该客户发布?

0 投票
2 回答
2709 浏览

silverlight - Silverlight PollingDuplex InnerChannel 出现 multipleMessagesPerPoll (serverPollTimeout) 故障

我正在运行 silverlight 客户端版本 4.0.50917.0 和 SDK 版本 4.0.50826.1

我针对 wcf pollingduplex 绑定创建了一个简单的 silverlight 客户端:

网络配置:

</system.serviceModel>

我的 silverlight 客户端连接如下:

我得到了一个内部通道错误的事件处理程序:

...

当使用上面的 Client.InnerChannelFaulted 事件时恰好在1 serverPollTimeout之后发生。(默认 15 秒,通过 Fiddler 验证)

如果我将客户端切换为这样连接:

aka 每个民意调查提琴手的单条消息表明,在每次serverPollTimeout新的民意调查开始后并且通道没有故障。

有什么想法吗?

编辑:

我已阅读http://social.msdn.microsoft.com/Forums/en/wcf/thread/1e6aa407-4446-4d4a-8dac-5392250814b8http://forums.silverlight.net/forums/p/200659/468206 .aspx#468206 并且我同意“singleMessagePerPoll”不是一个体面的解决方法。正如您在我的版本中看到的那样,我正在运行最新版本的 SDK 和开发人员运行时。

编辑2:

我刚刚发现,如果我使用 google chrome 作为浏览器而不是 IE8 MultipleMessagesPerPoll 工作正常!对我来说,这闻起来像是运行时与 ie8 的错误?

编辑3:

Silverlight WS 博客上的确认: 链接

0 投票
2 回答
1365 浏览

asp.net - 新添加的 global.asax 文件如何弄乱我的 WCF 服务

我有一个 Silverlight 应用程序,它通过轮询 Duplex 和“正常”异步调用来使用 WCF。一切正常,直到我添加了一个 global.asax 文件。

经过一个小时的谷歌搜索,我发现了Jean-Dirk Stuart的这个相当过时的博客,它建议注释掉存根的 Session_start 事件。

果然解决了这个问题,但它引起了一个担忧。为什么 global.asax 文件的这个看似良性的成员会破坏 wcf 调用。