我有一个使用tcp的服务,并且我的所有方法都是异步的,所以我实现了Begin/End方法(我使用C#4.0)。如果我只修改我的app.confing以将传输模式设置为Streamed而不是Buffered,当我在客户端中进行异步调用时,应用程序将永远等待响应。但是,如果我将传输模式更改为缓冲,则它可以正常工作。我还注意到我需要在缓冲传输模式下使用reliableSession,因为当我启动应用程序时,我收到错误10061,目标服务主动拒绝连接。我知道如果我想使用流式传输模式我不需要禁用dereliableSession,所以我想问是否可以使用异步方法的流式传输模式。谢谢。编辑:我正在尝
我是WCF的新手,我了解到使用WCF可以通过各种协议(protocol)和消息格式在两个或多个分布式系统之间进行通信。到目前为止,出于练习目的,我使用了basicHttpBinding。但出于演示目的,我想真正确定在哪里使用netTcpBinding等。请告诉我net.TcpBinding变得真正有用并且几乎必须选择的场景。据我所知,WCF相对于它的传统各种对应物(如ASP.NetWeb服务)的主要优势之一是它可以通过其他传统Web服务无法通过的各种协议(protocol)进行无缝通信。是真的吗?请澄清。 最佳答案 针对不同目标
我不熟悉创建WCF服务。我创建了一个使用TCP的WCF服务。该服务在IIS7上运行。在解决方案文件中,我有一个用于测试服务的客户端项目。我使用TCP端点运行客户端项目,它访问服务,一切正常。现在,我想从一个新的独立项目访问我的TCP服务,该项目不像客户端项目那样属于服务解决方案的一部分。我在VS2008中新建了一个项目,点击AddServiceReference,输入net.tcp地址(net.tcp//......),点击go。返回一个错误,指出“元数据包含无法解析的引用。”IIS7中是否还有其他需要配置的内容?我是否正确地添加了对使用TCP的服务的引用?如果需要,我可以提供更多信息
我在ServerA上部署了一个WCF服务。我正在使用tcp绑定(bind)。我还有一个由ServerB和ServerC组成的网络场。当我在任何服务器ServerB或ServerC上部署使用WCF服务的应用程序时,在尝试调用我的服务时出现错误。我添加了跟踪,这是我得到的错误:Thesocketconnectionwasaborted.Thiscouldbecausedbyanerrorprocessingyourmessageorareceivetimeoutbeingexceededbytheremotehost,oranunderlyingnetworkresourceissue.L
正如我的标题所写,背景:我有2种不同类型的应用程序(WPF-silverlight),它们可以相互通信——医生应用程序和患者应用程序——但这并不意味着只有2个应用程序会运行,例如:我可以运行3个医生应用程序和7个病人应用程序。所有这些应用程序都通过tcp连接使用wcf进行通信。通信是实时的(如Messenger应用程序)流每次有应用程序在线(运行)时,我都会在wcf上注册它的连接,因为我需要让其他应用程序知道(实时)有新客户端连接或有新客户端断开连接。问题:可以让其他应用程序知道有传入的应用程序/客户端,但我的问题是,如果此客户端已断开连接,如何让其他应用知道,如果用户正确关闭应用程序
我们的WCF解决方案有一个自定义监听器,它继承自ChannelListenerBase.我们有一个行为不端的客户端(超出我们的控制),它按照以下几行与我们进行TCP对话:SYNSYN,ACKRST基本上,他们试图在套接字建立、失败和关闭套接字之前对其执行操作。在我们的OnEndAcceptChannel代码,我们最终无法创建channel,因为当我们到达那里时底层Socket已经关闭,我们得到一个SocketException。这似乎杀死了听众,阻止它接受进一步的连接。来自OnEndAcceptChannel,我们已经尝试返回null,抛出异常,并对监听器进行故障处理,以便它可以在调用
我有一个异步服务,我必须将一个文件从客户端传输到该服务。该服务被配置为使用流式传输模式,因此如果我没记错的话,文件会在不等待加载所有文件的情况下传输。我想知道如何知道文件是否已完成,因为我需要转换此流才能将此流转换为byte[]以将文件存储在数据库中。我问这个是因为当我从客户端接收服务中的文件时,我收到一个只读流,具有可用的长度属性,我无法将此流转换为字节数组。谢谢。 最佳答案 为什么不创建内存流然后将字节读入数组?MemoryStreamms=newMemoryStream(dataHERE)byte[]passing=ms.Re
我正在尝试连接到服务器上的WCF服务。我已经在服务器的IIS中设置了一个站点,并将EnabledProtocols设置为http,net.tcp。此外,我还像这样配置了SiteBindings:http>端口:80>IP地址:*net.tcp>绑定(bind)信息:808.*在Authentication下,我启用了AnonymousAuthentication和WindowsAuthentication。服务Net.TcpListenerAdapter和Net.TcpPortSharingService也在运行。当我使用浏览器(通过http)调用网络服务时,一切正常,我可以列出wsd
我在Windows7上开发一个带有WCFREST和TCP(角色间)端点的项目。我刚刚升级到Windows8,现在我遇到了严重的问题。首先,当我将我的项目部署到Azure时,我收到了这些警告:WindowsAzureTools:Warning:Remappingprivateport80to81inrole'OfisimCRM.WebClient'toavoidconflictduringemulation.WindowsAzureTools:Warning:Remappingprivateport443to446inrole'OfisimCRM.WebClient'toavoidcon
我试图了解WCF中标准绑定(bind)之间的区别。作为其中的一部分,我正在阅读WCFBindingsinDepth.图2显示有些绑定(bind)的传输是HTTP,有些是TCP。我很困惑b/c我认为HTTP是应用程序级协议(protocol),而不是传输协议(protocol)——而且HTTP在TCP之上运行。因此,通过将其称为HTTP绑定(bind),我们是否理解它实际上是在TCP之上的HTTP上运行? 最佳答案 SobycallingitanHTTPbinding,arewetounderstandthatit'sactually