问题标签 [duplex-channel]
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.
c# - 在不同的模块中解析时,Unity 无法解析类型
我目前正在使用统一容器和 WCF 服务开发 PRISM 应用程序。在模块中(使用 WCF 代理),我为 WCF 客户端注册了一个 ChannelFactory,如下所示:
现在,一切正常,所以我决定在另一个模块中使用这个 ChannelFactory。这是模块的 Initialize 方法:
所以这个代码和其他模块的代码完全一样,只是缺少注册。
运行此程序时,出现以下异常:
这似乎是 ChannelFactory 的解析和 Ctors 的问题,但是为什么统一可以在第一个模块中解析工厂而不是在这个模块中呢?
我也不明白这个异常消息,因为我认为在注册中调用了一个特定的 Ctor:
有任何想法吗?
wcf - WCF 跨域双工:你的 Thawtes
(哈!看看我在那里做了什么?)
我有一个系统,服务器将信息从中央数据库推送到许多客户端数据库(通过互联网跨域),并定期调用服务器上的服务。这必须承受间歇性连接,即队列消息。
我使用双工 MSMQ 创建了一个开发版本,我正在尝试应用传输安全性。从我所做的阅读来看,似乎是:
- MSMQ 使用 AD Windows Security,这是无关跨域的。
- 由于双工的性质,每个客户端实际上也是一个服务器。这意味着如果我想使用 SSL,每次我用另一个客户端安装系统时都需要支付 1200 美元。
这些事实是否正确?我真的是唯一需要保护排队、跨域和双工服务的人吗?
wcf - 在回调方向检查 WCF 消息?
我可以分别使用 IClientMessageInspector、IDispatchMessageInspector 在客户端和服务器端检查 WCF 消息。但是在双工通信中,不清楚如何在从服务器到客户端的回调中做到这一点(关于该主题的文档也很少)。
关于如何实现此功能的任何想法?
c# - 多次调用后 WCF 中的 TimeoutException
也许我不正确地实现 WCF,但是NetNamedPipedBindings
在进行多次调用后,我似乎在使用时遇到了 WCF 异常。
这是我正在做的事情的高水平。基本上,我正在处理一个 out of proc exe 并使用 WCF 命名管道来回通信。我通过这个属性让我的主机保持打开状态:
然后,在我的客户端中,我创建了一个static DuplexChannelFactory
实例化一次,然后根据需要通过以下方式使用:
我添加了一个 Ping 方法只是为了确保主机正常工作(因为主机会发回我们不想在不知道的情况下错过的事件)。此 Ping 方法每 5 秒运行一次,并且只返回一个 true。但是,在运行了几分钟后,我得到了一个TimeoutException
. 这是我的异常跟踪:
服务器堆栈跟踪:在 System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout) 在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 在 System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
在 System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout) 在 System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout) 在 System.ServiceModel.Channels。 ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade) at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins , Object[] outs, TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs) at System.ServiceModel.Channels.ServiceChannelProxy。InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation) at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)
我打开了 JustDecompile,发现这个错误很可能发生在这里:
但是,我看不出为什么在之前工作了几次 ping 之后这会超时?我需要设置什么设置才能使这个无限和/或我是否有另一种方法可以从客户端或服务器端实现这个 WCF 事件服务器(它也用于按需处理)?
更新
在我开始看到呼叫尝试并且没有返回之前,我做了大约 6 次 ping。
c# - 双工通道故障事件不会在第二次连接尝试时出现
我有常规的 net.tcp WCF 服务客户端和常规的 net.tcp双工(即带有回调)WCF 服务客户端。我已经实现了一些逻辑来不断地重新实例化连接,以防服务出现故障。
它们的创建方式完全相同:
FaultedHandler()
中止通道并使用上面的代码重新创建它。
重新连接逻辑工作得很好,在FooServiceClient
许多故障后重新连接。然而,几乎相同但双工BarServiceClient
仅从第一个BarServiceClient
实例接收故障事件,即一次。
为什么只有双工的第一个实例BarServiceClient
得到故障事件?有什么解决方法吗?
一个类似的未回答问题:WCF Reliable session without transport security will not faulted event on time
c# - ServiceHost AddServiceEndpoint - 多个连接
我有一个基于此的 Duplex WFC 客户端,与单个客户端一起使用时效果很好。当我尝试将多个客户端连接到服务器时,就会出现问题。当我这样做时,我得到一个例外:There was no endpoint listening at net.tcp://localhost:9080/MyDataService/1617f081e4b04c288965eea6ae18a39f that could accept the message. This is often caused by an incorrect address or SOAP action.
我这样定义我的端点:
并像这样添加我的客户端端点:
第一次连接没有问题,但是当我尝试以同样的方式连接第二个客户端时,会抛出上述异常。
有谁看到我做错了什么?
感谢进阶!
c# - DuplexChannelFactory <反射接口>
使用TypeGenerator类
和TypeExtensions类
我能够将同步接口转换为异步接口。
如何将DuplexChannelFactory与预定义的反射异步接口一起使用?
我收到以下问题:
找不到类型或命名空间名称“myInterface”(您是否缺少 using 指令或程序集引用?)
我正在尝试编写中间层 WCF 接口。
wcf - ServiceModel.DuplexClientBase.net 可移植子集中缺失
我试图从可移植类库(VS2012)使 wcf 服务引用到 net.tcp 双工。生成的代码引用了一些 System.ServiceModel 类,它们不包含在 .net 可移植子集中(例如:System.ServiceModel.DuplexClientBase)。
有没有办法让 wcf 双工通道在可移植类库中工作?还是现在不支持?
谢谢!
wcf - 每次调用服务应用程序后在客户端关闭通道
我已经开始使用 WCF 开发客户端-服务器分布式应用程序。客户端也应该向服务器发送请求,因此我选择使用 NetTcpBinding 实现双工操作,因为所有客户端都将在同一个 Intranet 上。
在服务器端,对于实现服务器契约的服务类,我使用这些设置
每次初始化客户端时,我都会创建通过'Add service reference'
在 Visual Studio 中添加服务使用选项生成的代理类的实例。代理初始化后,我向Connect
服务器发送一条消息:
现在服务器有一个对连接客户端的引用,通过使用
这很简单,没什么特别的。但是,在服务器上线后让客户端重新连接到服务器时,我遇到了一些麻烦。在我的场景中,我将有多达 50-100 个客户端连接到服务器,它们很少与服务器通信,假设平均每小时 1 个请求。
我想要实现的是让客户端在离线时“挂起”,为此我尝试在每次通道结束时重新初始化客户端的通信通道Faulted
,这可以正常工作。但是当我尝试关闭服务器时,我收到以下消息
我现在正在努力为我的场景找到最合适的实现:
- 服务调用后不关闭通道。这样,一旦与服务器的连接断开(例如 1 分钟的间隔),客户端将始终尝试重新创建通道。不过,一直保持频道打开没有多大意义,所以我不太确定这种方法。
- 每次调用后关闭通道并在对服务器进行新调用时重新创建。这在进行服务调用时可以正常工作,但是如果服务器想要向客户端发送通知会发生什么?服务器端的回调引用将不再有效,我必须等待客户端发送新的连接消息才能获取新的回调引用,对吗?在这种情况下,我是否应该定期对服务器进行类似于 Ping() 的不同调用,以确保服务器始终可以联系客户端?
我仍在阅读有关 WCF 双工操作的材料,只是无法确定哪种方法更好,以免以后遇到问题。
谢谢你的建议!
wpf - UseSynchronizationContext=false 是否意味着我必须是线程安全的?
这是关于带有 NetTcpBinding 的 WCF 双工服务。
我刚刚将 UseSynchronizationContext=false 参数添加到我的 ServiceBehavior 属性中,这可以在服务端的回调通道上调用 Close() 时停止冻结。
然而,这是否意味着我现在必须在我的 WPF 窗口中保持线程安全?因为我可能会在两个不同线程上同时单击一个按钮时获得回调操作,对吗?