问题标签 [wsdualhttpbinding]

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 回答
1334 浏览

wcf - WsDualHttpBinding 如何了解回调通道?

有些东西对我来说似乎很奇怪,我试图用反射器查看 WCF 内部,但请原谅我太难理解了:(。

当客户端 A 使用 wsDualHttpBinding 在服务器 B 上调用双工服务时,我在想客户端 A 在请求的标头中包含客户端基地址(回调的地址),如下所示

.

OperationContext.Current.IncomingMessageHeaders.ReplyTo 返回空...

wsDualHttpBinding 如何知道客户端通道的地址????

有什么黑魔法吗?

解决方案

这是负责传输replyTo 地址的可靠会话。我们可以在 customBinding 中使用这些绑定元素来验证这一点

删除reliableSession,您的服务不再有回调通道......

0 投票
2 回答
4329 浏览

wcf - WCF + SSL wsDualHttpBinding 或 netTcpBinding

我需要创建一个自托管的 WCF 服务。我需要通过 Internet 在客户端和服务器之间建立安全的双工连接。

看了一些WCF的文档,发现netTcpBinding适合内网应用,因为SSL只有2点。如果是互联网应用程序,连接不能是点 2 点,对吗?那么使用 netTcpBinding 进行传输安全的 SSL 不适合吗?

那么我应该使用什么组合来创建安全的双工互联网应用程序?非常感谢您。


我试过http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx 本教程使用 netTcpBinding 和端点 localhost

我将端点 localhost 更改为基于名称的 url,将路由器中的端口转发到我的开发 PC,在 Windows 防火墙上打开相同的端口。

客户端程序可以和不同机器上的每个cients程序聊天,但是一分钟后回调连接会丢失。

我还尝试将绑定更改为wsDualHttpBinding,客户端程序可以与同一台机器上的每个客户端聊天,并将回调连接保持在reliableSession inactivityTimeout 设置中。但是另一台机器上的另一个客户端程序无法加入服务器,如果我关闭该机器上的 Windows 防火墙,客户端程序可以连接。

似乎tcp绑定可以让客户端程序连接到带有Windows防火墙的服务器。但回调连接丢失。

并且 wsDualHttpBinding 可以保持回调连接。但如果 Windows 防火墙打开,则无法连接到服务器。

有没有办法像 wsDualHttpBinding 一样保持 netTcpBinding 回调连接?

0 投票
2 回答
11309 浏览

.net - WCF中WSDualHttpBinding的优势是什么?

到目前为止,除了可以从双通道获得的即时通知之外,没有人能真正提供使用双通道而不是客户端轮询系统的任何好处。每隔一点说,如果您不需要立即通知,双重绑定提供负值 - 有人不同意这一点吗?

与调用 WCF 服务的客户端轮询相比,将 WSDualHttpBinding 与 IIS 托管服务一起使用会有多大好处,假设在后者中服务缓存了有问题的数据?

这个场景将用于通知类型的服务,当事件发生时,客户端需要由服务通知。

具体来说,与轮询相比,WSDualHttpBinding 有哪些优势?即:更少的网络流量,更快的设计,更容易维护,更多的控制???

据我了解,WSDualHttpBinding 的可扩展性不如客户端轮询,那么为什么要使用它呢?编辑:正如马特提供的那样,时间紧迫可能是双面绑定的原因之一。

这是我到目前为止所拥有的:

WSDualHttpBinding

adv:无需等待轮询计时器即可立即获得响应

dis: 比 WsHttpBinding 可扩展性差

dis:不太友好的防火墙

dis: 比 WSHttpBinding 慢

我将根据评论添加此内容,如果我陈述不正确,请告诉我。

感谢您的输入:-)

0 投票
1 回答
1648 浏览

wcf - 通过 basicHttpBinding 和 wsDualHttpBinding 托管的 WCF 回调服务

我有一个通过 wsDualHttpBinding 托管的回调服务。我正在寻找一个将轮询数据而不是接收回调的客户端(将是一个使用 wince 进行演示的移动设备)。我很好奇最好的方法是什么?您不能使用 NetCFSvcUtil 和由 wsDualHttpBinding 托管的服务创建客户端代理(我理解),但您不能通过 basicHttpBinding 托管回调服务。我真的需要托管在 basicaHttpBinding(客户端将轮询数据)和 wsDualHttpBinding(回调将通知客户端数据)上的相同服务。关于在不创建两个单独的服务来托管相同数据的情况下处理此问题的最佳方法的任何想法?

0 投票
1 回答
686 浏览

wcf - wsDualHttpBinding 因数据集较大而失败

我在我的 wcf 服务中使用 wsDualBinding 来处理我的软件中的 2 路通信。一切似乎都很好,除非我调用一个方法来获取客户列表。如果在服务中我将查询结果限制为 2730 条记录,我可以在大约 1-2 秒内获得结果并将它们显示在数据网格中。如果我将结果限制为 2731(另外一个),我会收到以下错误:

http://localhost:8731/Design_Time_Addresses/Dispatch_Studio_Server/DispatchService/在配置的超时 (00:00:59.9990000) 内未收到回复。分配给此操作的时间可能是较长超时的一部分。这可能是因为服务仍在处理操作,或者因为服务无法发送回复消息。请考虑增加操作超时(通过将通道/代理转换为 IContextChannel 并设置 OperationTimeout 属性)并确保服务能够连接到客户端。

在我的研究中,我读到流式传输更适合较大的数据集,因此我还尝试使用流式传输而不是缓冲设置 basicHttpBinding 端点,我得到了基本相同的结果。2730 条记录工作正常,但 2731 条记录给我以下错误。

通过 HTTP 通道传输数据时发生错误(无法从传输连接读取数据:连接已关闭。)。

我不会将 2730 条记录称为大型数据集。这让我相信还有其他原因导致了这个问题。

这是我的客户端配置:

这是我的服务器配置:

如您所见,我尝试更改 maxMessageReceivedSize 和其他设置来解决此问题,但无济于事。

谢谢你的时间。

0 投票
2 回答
3312 浏览

wpf - wsDualHttpBinding 无法使用 WPF 客户端在网络外部工作

我试图在 WPF 和 WCF 之间实现 DuplexCommunication,在内部测试时通信运行良好,在网络中,当我们在外部发布后尝试访问这个外部网络时,我们能够通过 Web 浏览器访问服务,但是当我们尝试打开连接时,WPF 客户端给出了错误。下面是服务器端和客户端的配置。服务器:

客户:

我尝试在服务器端提供带有 dns 值的“baseAddresses”和“identity”,也尝试在客户端提供 clientBaseAddress,但它仍然无法在网络之外工作。

尝试从 WPF 应用程序打开双工连接时总是出现超时错误:错误:“打开操作未在分配的 00:00:09.4911018 超时内完成。分配给此操作的时间可能是较长超时的一部分。”

我认为配置部分有问题,但不确定是什么,对此非常感谢。

谢谢。

0 投票
1 回答
1294 浏览

wcf - WCF wsdualhttpBinding 自定义用户名

我遇到了一个非常烦人的错误:我的场景 - 使用 wsdualhttpbinding 在 WCF 中实现的简单消息/邮件服务器\客户端(双用于回调,新消息的在线更新)。

所有安全配置都是用代码编写的(根本没有 *.config)。在第一次连接时,客户端会抛出以下 [System.Security.Cryptography.CryptographicException] = {"Bad Length.\r\n"} with NULL inner exception ,因此无法进行更深入的研究。服务器配置:

客户端配置:

任何帮助将不胜感激。顺便说一句,我是 WCF 的新手,所以也许我缺少一些基本概念。

0 投票
3 回答
5570 浏览

wcf - wcf wsdualhttpbinding超时问题

请帮我!!!

我正在尝试构建一个使用回调合同的应用程序。我的应用程序在同一台机器上的客户端和服务器都可以正常工作,但是当我尝试从其他机器访问服务时出现异常超时(操作 din 内未完成分配的超时)。客户端读取一些值从服务器上的数据库中抛出服务。我不知道我的错误在哪里。我试图将客户端放在虚拟机中,并且服务(和数据库) 在真机上。

这是我的服务器配置文件:

我的客户端配置文件:

-->

谢谢你。

这些是合同: public interface ITrainServiceCallBack { [OperationContract (IsOneWay=true)] void OnTrainChangeState(TrainData train); }

方法实现:

使用系统;使用 System.Collections.Generic;使用 System.Linq;使用 System.Runtime.Serialization;使用 System.ServiceModel;使用 System.Text;使用 System.Data;

namespace WCFandEFService { // 注意:您可以使用“重构”菜单上的“重命名”命令同时更改代码和配置文件中的类名“ProductService”。//[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]

}

0 投票
2 回答
2517 浏览

wcf - 双工 WCF 服务通道持续活动 (WSDualHttpBinding)

架构:

  1. 包含 wcf 双工服务的控制台应用程序;
  2. Windows 应用程序消费者;每个应用程序都订阅 Duplex,因此我们有一个订阅者列表,并且服务必须向其中一些发送通知,以防某些事件发生;

问题:

  1. 如何持续保持连接活动,以便服务可以向客户端发送通知?

我发现此绑定有 2 个通道。我需要永久打开服务(用于回调)的通道。

谢谢;

0 投票
1 回答
824 浏览

wcf - 无法使用 WSDualHttpBinding 在 WCF 客户端中捕获 FaultException

我有一个带有自定义 UserNamePasswordValidator 的 WCF 服务器。

在客户端,我调用了一个向代理添加了错误凭据的函数

在我可以看到的服务器调试器中,抛出了 FaultException。但是客户端永远不会收到这个异常。它最终会在客户端出现 TimeoutException。

如果我使用正确的凭据,将调用服务器端的功能并且一切都运行良好,因此 wcf 工作正常。

但是我该怎么办,FaultException 将被抛出给客户端,这样我才能意识到客户端的凭据是错误的?

更新:它有效,当我使用 WSHttpBinding 时,我能够捕获 MessageSecurityException。但是当我使用 WSDualHttpBinding 和双通道时,我遇到了超时。