我有一个WCF服务契约(Contract),它基本上是发布订阅者模式。WCF服务托管在我要从中发布的Windows服务中。客户端订阅消息,当Windows服务执行某些操作时它会发布给所有客户端。为了托管服务,我声明了一个ServiceHost类,并且Contract类有一个方法,该方法未在接口(interface)中标记但在要发布的类中实现。我希望能够在本地调用此方法(不通过WCF),然后通过回调发布消息。我似乎无法从ServiceHost获取Contract类的实例。这可能吗?如果可能的话怎么办?我知道解决方法是在服务中也内置一个客户端,但创建一个连接到自身的客户端似乎有点奇怪。提前
创建JSON网络服务的最佳方式是什么?我们有另一个使用Java的团队,他们坚持使用JSON完成所有通信。我宁愿使用WCF而不是任何第3方框架。我找到了这个博客:http://www.west-wind.com/weblog/posts/164419.aspx,它表明Microsoft的实现存在M$特定废话的缺陷。 最佳答案 如果您使用WCF和3.5框架,那就再简单不过了。当您使用WebGet属性标记OperationContracts时,只需将ResponseFormat参数设置为WebMessageFormat.Json。当以RE
我的C#.net应用程序正在使用HTTPS网络服务。由于证书现在即将过期,我正在尝试用我得到的新证书更新它(一个.jks文件,我使用javasdks的keytool将其转换为.p12)。我认为这很容易,因为我知道该怎么做,但它就是不合作。到目前为止我做了什么:将证书导入到CURRENT_USER\Personal导入证书到LOCAL_MACHINE\Personal给定正确的用户(apppoolidentity)通过winhttpcertcfg工具访问证书的私钥。以下是权限列表用于证书。使用findprivatekey工具,我还找到了实际的key文件,并授予apppoolidentit
我有一个Windows服务,它获取一堆文件的名称并对它们进行操作(压缩/解压缩、更新数据库等)。这些操作可能需要一些时间,具体取决于发送到服务的文件的大小和数量。(1)向该服务发送请求的模块等待文件处理完毕。我想知道是否有一种方法可以在服务中提供回调,在完成文件处理后通知调用模块。请注意,多个模块可以一次调用该服务来处理文件,因此我猜该服务将需要提供某种类型的TaskId。(2)如果一个服务方法被调用并正在运行,并且对同一个服务进行了另一个调用,那么将如何处理该调用(我认为只有一个线程与该服务相关联)。我已经看到,当服务在处理方法时花费时间时,与服务关联的线程开始增加。
总体设计如下:某些应用程序作为Windows服务安装网络上可能有几个这样的它们中的每一个都向网络公开一些接口(interface)(将其视为“远程控制”或“配置”之类的东西)然后有另一个应用程序充当该接口(interface)的客户端(使用相同的类比——“远程Controller”或“配置工具”)后者的目标是嗅出网络上前者的所有实例,将它们作为列表显示给用户,并允许用户使用公开的界面(即“远程控制”或“配置”它们)为了简单起见,我们假设每个人都在同一个网络中-也就是说,每个人都可以听到彼此的UDP广播。很简单,是吗?在过去,我曾经使用我自己的基于UDP广播的发现机制来构建这种东西。但现
我有一个应用程序一遍又一遍地重用同一个WCFchannel。我通过工厂对象保留静态引用。我想知道这是一个好的做法还是我应该打开x个channel并通过这些channel轮询所有服务调用而不是使用单个channel?如果仅使用1个channel,这些服务调用是否会排队?或者当我使用x个channel时是否会发生同样的情况? 最佳答案 您应该为所有请求使用一个channel工厂,但应该为每个请求构造不同的channel。永远不要重复使用channel。它们的创建成本并不高,而且不是线程安全的。创建成本高昂的是channel工厂。它是线程
当我尝试使用网络服务时,出现以下异常。我的主要问题是这个异常什么时候发生?在服务器或客户端?错误在哪里?服务器是否会因各种错误而抛出此错误?我自己做了一些似乎有效的更改它现在确实有效了。我在服务客户端上删除了using并添加了somcleanup。if(Service!=null&&Service.State!=CommunicationState.Faulted){success=true;Service.Close();}}catch(Exceptionex){msg="Error"+Environment.NewLine+ex.Message+Environment.NewLin
有没有办法在不指定配置名称的情况下使用指定端点地址在C#中创建WCF服务客户端实例?默认情况下,客户端有这些构造函数:publicServiceClient()publicServiceClient(stringendpointConfigurationName)publicServiceClient(stringendpointConfigurationName,stringremoteAddress)显然,由于第一个构造函数,存在默认配置。我想要的是只指定最终构造函数的第二个参数。现在,我正在努力阅读使用ConfigurationManager的配置元素来弄清楚,但这似乎非常麻烦。
我正在使用Microsoft服务配置编辑器来设置诊断(WCF日志记录),但我找不到任何方法来设置最大文件大小?我找到了MaxSizeOfMessageToLog但它对文件大小没有任何作用?编辑1:根据这个:http://msdn.microsoft.com/en-us/library/aa395205.aspxsharedListeners级别应该有一个maxFileSizeKB,但是当在添加标记中点击空格时,我无法键入maxFileSizeKB?编辑2:当添加maxFileSizeKB时,服务将不再启动,而是会出现以下异常:“maxFileSizeKB”不是类型“System.Dia
在C#documentation对于委托(delegate),它说“委托(delegate)是一种引用类型,可用于封装命名或匿名方法。委托(delegate)类似于C++中的函数指针;但是,委托(delegate)是类型安全的并且安全”我的问题是,委托(delegate)“安全”是什么意思? 最佳答案 委托(delegate)强制对方法进行类型安全调用。这通常通过编译器执行的静态类型检查来工作。但这不是唯一的方法,您可以使用Delegate.DynamicInvoke()来绕过编译器类型检查。一个例子:usingSystem;cla