Tag: duplex

从异步WCF双工调用更新asp.net页面 – 对象范围 – ASP.NET

我有以下疑问。 我有一个页面“MyPage”,我在页面类中声明了很少的字典对象。 我怀疑是 如果我将字典声明为私有非静态对象,我无法在该页面类中的函数中使用它(该对象被取消) 但是,如果我声明字典是静态的,我可以跨越函数跨越对象。 但是,对于现在打开页面的所有用户,该对象是否相同(猜测每个用户将依次拥有该页面的实例具有页面类的实例,并且类的静态变量在所有实例中都是不变的class级) 我的理解是对的吗? 如何声明对象在页面类中的所有函数中可用,并且对于页面的每个实例(用户)都是唯一的。 UPDATE1 好吧,我发现页面类中字典对象的初始化是在不同的线程中完成的(WCF Duplex回调)。 但是在主页面线程中,字典对象仍然保持为null(未初始化)。 有任何想法吗? UPDATE2 编组 – 任何机会都有用吗? UPDATE3 回复约翰 – 感谢您的回复。 我现在面临的问题是将数据从客户端的WCF回调类(将在单独的线程中调用)传递到asp.net页面。 那我该怎么做呢? 查看状态可以帮助我跨请求保留数据。 但是当服务器调用回调通知更改时,我应该如何将更改(数据)传递给UI线程(asp.net页面)?

群集环境中的WCF双工通信

所以我看的是人们为Duplex Communications创建的示例示例,即由IIS托管并通过Silverlight连接。 有很多这方面的例子( 这篇MSDN文章很棒 ),但都使用相同的范例: 用户A连接到服务器A,它将他放入内存列表以接收未来的更新。 用户B连接到服务器A,它通知列表中有人“登录”的所有用户。 ……但是什么时候会发生什么 用户C连接到服务器C,服务器C的内存列表不包含用户A或B. 问题是我希望在集群(Web场)环境中实现它。 这使事情变得复杂,因为我无法validation哪个机器最终会调用wcf调用,因此将任何消息转发给所有其他用户是很困难的。 我能想到的最佳方案是实际让客户端连接到某种路由服务,该服务接收传入的请求并将客户端转发到特定的机器。 当然,然后我失去了Web场的好处,因为一台机器有效地处理了所有传入的请求。 一种不太有效的解决方案是让服务不断轮询某些内容(文件服务器上的文件或数据库中的表)查找更改。 一旦出现更改,请将其推送给客户端。 这似乎是一个非常丑陋的婴儿,所以。 我错过了什么? 更新 – 路由系统不可能满足我的需求。 我的托管公司不允许我通过IP直接连接到服务器场中的特定计算机。 我只能连接到通用负载均衡器前端,因此无法保证我的用户最终会在同一台服务器上运行。 到目前为止,我们要在数据库中查询表中寻找更改。 仍然看起来像一个丑陋的婴儿。

为什么TimeoutException不会导致我的频道错误?

我有一个双工WCF服务和客户端在同一台机器上运行。 客户端配置为15秒超时: 客户端正在处理这样的错误: client.InnerChannel.Faulted += FaultHandler; client.InnerDuplexChannel.Faulted += FaultHandler; client.ChannelFactory.Faulted += FaultHandler; 如果我终止了我的服务进程,客户端在15秒后正确获取TimeoutException : This request operation sent to net.tcp://localhost:8732/Service/ did not receive a reply within the configured timeout (00:00:15). The time allotted to this operation may have been a portion of a longer timeout. This may be because the service is still processing the […]

c#中使用命名管道的两个进程之间的双工操作

我试图使用命名管道在同一台机器上的服务器和客户端进程之间进行通信。 服务器向客户端发送消息,客户端对其执行某些操作并返回结果,服务器应该得到结果。 这是服务器的代码: using System; using System.IO; using System.IO.Pipes; class PipeServer { static void Main() { using (NamedPipeServerStream pipeServer = new NamedPipeServerStream(“testpipe”, PipeDirection.InOut)) { Console.WriteLine(“NamedPipeServerStream object created.”); // Wait for a client to connect Console.Write(“Waiting for client connection…”); pipeServer.WaitForConnection(); Console.WriteLine(“Client connected.”); try { // Read user input and send that to the client process. using […]

使用net tcp的WCF双工服务:“需要流安全性……”

我正在编写一项服务,允许用户注册并在事件发生时接收通知。 我正在尝试使用netTcpBinding执行此操作,但即使在本地计算机上运行时也会遇到错误。 当我尝试发送通知时,我超时,收到此错误: http://www.w3.org/2005/08/addressing/anonymous需要Stream Security,但没有协商安全上下文。 这可能是由远程端点从其绑定中丢失StreamSecurityBindingElement引起的。 为了测试我在一个控制台中托管服务,它正在为我打开,我可以看到WSDL并在其上运行svcutil。 当我运行客户端时,尝试发送通知是在上面的错误出现时。 主机App.config: 这是客户端App.config: 我省略了很多注册码,因为我现在只是想让通知正常工作。 计划是在2003 Server中的Windows服务中托管它,该服务不属于客户的域(他们的设置),客户端计算机将位于客户的域中。 编辑: 我已将绑定添加到主机的App.config: 这仍然是错误,具有相同的Steam Security是必需的错误消息。 在新解决方案中尝试此应用的一小部分。

找不到与scheme net.tcp匹配的基址

当我尝试设置双工模式通道时,我已将文件传输服务从basicHttpBinding移动到netTcpBinding。 我还启动了net.tcp端口共享服务。 我目前在dev并且在xp框上自我托管,直到我们将应用程序移动到开发服务器。 所以,就目前而言,我无法访问IIS。 在配置我的服务之后: 而且,我的约束如下: 当我正确浏览到SVC文件时,我得到了以下错误: 无法找到与绑定NetTcpBinding的端点匹配scheme net.tcp的基址。 注册的基地址方案是[http]。 在线阅读表明,为了解决这个问题,我需要将net.tcp绑定添加到IIS中应用程序的绑定。 但是,如果我是自托管并且无法访问IIS,我该怎么办? 顺便说一句,如果您正在阅读此内容并“执行”拥有IIS,请执行以下操作:右键单击IIS中的虚拟目录/应用程序 – >管理应用程序 – >高级设置。 并且,在Enabled Protocols部分中,添加net.tcp。 有任何想法吗? 更新:我以为我有它工作,但它仍然没有工作。 这是我现在拥有的:我仍然得到“找不到与scheme net.tcp匹配的基地址”错误。 我已经更改了所有基地址以反映您的建议。 这就是我现在拥有的: 我用“net.tcp:// localhost:2544”和“net.tcp:// localhost:8001”尝试了这个。 我是否需要在防火墙设置中添加(允许)某些内容? 还有其他建议吗? 这是我的App.config文件中的filetransferservice的mexTcpBinding: 我仍然无法在我的网络应用程序中引用我的FileTransferServiceClient。 再次感谢。