Tag: #wcf

何时关闭WCF客户端?

我已将WCF服务的客户端代理实例放入App类的属性中,以便我可以从应用程序的任何位置获取它。 我没有关闭客户端,我在应用程序期间将其保持打开状态。 这样做的主要原因是,如果我在WCF服务mex页面(如果你将浏览器指向WCF服务url时得到的那个)中按//注释,则表示//始终关闭客户端。 client.Close(); 这很好,除非我在调用client.SomeAsync()方法之后立即调用client.Close(),然后在结果返回之前关闭它。 我应该接近Completed()方法吗? 或者我应该忘记关闭它,因为一旦关闭它我必须创建客户端代理的新实例(如果是这种情况,也可以不将它存储在App.property中。 谢谢,斯蒂芬

缺少“管理私人钥匙”选项

我正在使用Windows 2008R2下IIS 7.5上托管的Transport Security开发WCF服务。 我有一个在IIS 7.5中生成的证书,该证书存储在Local文件夹中。 当我使用BasicHttpBinding或WSHttpBinding与Transport Security时 – 一切正常。 但当我将其更改为NetTcp时,我得到一个例外: CryptographicException ‘Keyset does not exist’. 经过一段谷歌搜索后,我发现问题可能是因为我的NETSERVICE IIS帐户没有预先设置我的证书的私钥。 解决方案是通过右键单击我的证书并选择“MANAGE PRIVATE KEYS”选项来设置MMC中的访问权限。 但是在选择菜单中没有这样的选项! 证书是在管理员帐户下创建的,我打开它 – 它说,它有私钥。 我做错了什么?

servicePrincipalName应该有什么价值?

我正在尝试在我的服务上设置客户端模拟。 我需要为我的服务endPoint的servicePrincipalName设置一个值 我正在看这篇MSDN文章,但仍然无法弄明白 我的服务托管在服务器上的控制台应用程序中,我们称之为ServerName1。 Uri是: net.tcp://ServerName1:9990/TestService1/ 。 具体应该是我的servicePrincipalName是什么? 我试过了,没有任何喜悦:

WCF RESTful服务中的访问请求正文

如何在WCF REST服务中访问HTTP POST请求正文? 这是服务定义: [ServiceContract] public interface ITestService { [OperationContract] [WebInvoke(Method = “POST”, UriTemplate = “EntryPoint”)] MyData GetData(); } 这是实施: public MyData GetData() { return new MyData(); } 我虽然使用以下代码来访问HTTP请求: IncomingWebRequestContext context = WebOperationContext.Current.IncomingRequest; 但IncomingWebRequestContext只允许访问标题,而不是正文。 谢谢。

向WCF ServiceContract添加方法是否会破坏现有客户端?

我们有一个现有的ServiceContract [ServiceContract(Namespace = “http://somesite.com/ConversationService”)] public interface IConversationService { [OperationContract(IsOneWay = true)] void ProcessMessage(Message message); [OperationContract(IsOneWay = true)] void ProcessMessageResult(MessageResult result); } 我们需要为它添加一个方法 [ServiceContract(Namespace = “http://somesite.com/ConversationService”)] public interface IConversationService { [OperationContract(IsOneWay = true)] void ProcessMessage(Message message); [OperationContract(IsOneWay = true)] void ProcessMessageResult(MessageResult result); [OperationContract(IsOneWay = true)] void ProcessBlastMessage(BlastMessage blastMessage); } 这会破坏使用此服务的任何现有wcf客户端吗? 或者我们是否必须更新所有现有的wcf客户端? 编辑:此服务使用netTcpBinding和netMsmqBinding

WCF Duplex客户端的最佳实践

我不能否认双工异步调用的性能优势,但有些事情让我感到谨慎。 我担心的是,给定一个客户端对象实例化,WCF能否告诉哪个特定的客户端服务实例将收到回调参数? 谁能告诉我这是不是一个好主意? 如果不是为什么不呢? new DuplexChannelFactory( new ClientService(), new NetTcpBinding(), new EndpointAddress(“net.tcp://localhost:1234/”+Guid.NewGuid())) 如果保留上面的虚拟路径,则如何将其丢弃。 我希望客户端服务的生命周期相当短。 IE发出请求并收到响应,完成接收后,将其杀死。 将客户端服务生命周期缩短而不是将其整合并使其保持更长时间的性能损失有多糟糕。 这个想法是为了避免超时问题。 完成接收,发送,尽快处理。 按照惯例 – 无法传递客户服务。 如果您需要信息,请创建一个新的,简单的 – 就像EF / L2S等。 从WCF服务本身内部,如何终止与客户端的会话。 即。 我不希望客户端结束会话 – 我知道我可以相应地修饰我的操作,但我希望服务在满足某些条件时以编程方式终止自身。 我可以相应地粘贴端口并转发以解决任何防火墙问题,但我担心的是客户端是否坐在负载均衡器后面。 服务如何知道要调用哪个特定服务器?

如何在C#中使用REST,包括PUT,POST和DELETE?

我有一个我需要在C#中使用的REST Web服务。 我需要支持的不仅仅是GET请求。 我需要REST完成的所有工作,包括GET,PUT,POST和DELETE。 与此接口的最佳方式是什么? 我没有看到任何HTTPRequest能够进行POST或GET以外的任何事情,除非你构建自己的头文件(我不喜欢) 是否有一些简单轻量的方法可以在C#中完全使用REST Web服务?

从块中获取WCF的大列表?

我正在尝试从WCF服务获取实体列表,我遇到的问题是我们在网络上有一些不良延迟,因此数据需要相当长的时间才能到达我的客户端。 我的想法是找到一种方法来获得前1000个,并在我等待下一个到达时将它们推送到UI。 我想它会像分页一样,但我只是想在WCF层中寻找整个集合而不是从db中一次获取一个页面 干杯

WCF服务作为MVC应用程序的一部分

我在MVC4中有一个Web应用程序。 我将主持一个共享的托管服务提供商。 我想用WCF服务扩展它以上传文件。 (WPF桌面应用程序将允许用户直接从他们的PC上传文件。) 我宁愿以某种方式“一起”托管它以避免存储目录的读/写访问问题,但我不知道如何做到这一点。 我应该在MVC应用程序中托管WCF作为自我主机吗? 我应该将WCF服务作为应用程序还是类库? 如何将它与MVC应用程序结合在一起?

远程处理或WCF用于新开发(在同一台机器上的两个.NET应用程序之间)使用接口?

我们希望在同一台机器上运行两个.NET应用程序相互通信。 我们想要三个项目。 包含接口的库。 实现接口的“服务器”应用程序和使用接口与服务器通信的“客户端”应用程序。 我们不希望客户端引用服务器。 我们有一个测试应用程序使用远程处理,但最近发现远程处理正在被WCF取代。 由于这是新的开发,我们觉得我们应该使用WCF,但是我们还没有设法使它与WCF一起使用并且想知道它是否可能? 编辑: 很抱歉我上面没有详细信息,但我当时无法访问任何代码。 我正与这个项目的另外两个人一起工作,并没有密切关注他们的IPC内容。 我知道他们目前认为WCF无法做他们想做的事情,我希望能够向他们展示它可以。 我已经开始关注我的同事尝试,并将继续按照我的理解更新这篇文章。 下面是他们用于远程处理的测试代码的简化版本。 他们希望能够使用WCF执行此操作,但到目前为止还无法使其工作。 Lib \ IMessage.cs Lib \ IService.cs ServiceApp \ Service.cs ServiceApp \ ServiceMessage.cs ServiceApp \ ServiceProgram.cs ClientApp \ ClientProgram.cs ServiceApp和ClientApp程序集都引用Lib程序集。 他们没有互相参考。 当我能够更好地解释他们在WCF中复制此行为的尝试时,我将再次编辑它。 此时我真正知道的是他们正在使用NetNamedPipeBinding并且客户端应用程序遇到问题,他们无法访问服务程序集。 编辑: 下面是WCF测试代码的简化版本。 Lib \ IMessage.cs Lib \ IService.cs ServiceApp \ Service.cs ServiceApp \ ServiceMessage.cs ServiceApp \ ServiceProgram.cs ClientApp \ […]