Tag: #wcf

在WCF服务中覆盖ToString方法

这是我的服务生成类: public partial class MyClass : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { } 我正在使用自己的服务。 在MyClass我覆盖了ToString()但我的客户端没有。 我想要生成它或者MyClass是部分的我能够自己覆盖ToString吗? 我知道我可以用生成的.cs文件写。 什么是最好的方法,我应该这样做?

“使用”语句中的exception,WCF没有正确关闭连接。 如何关闭故障WCF客户端连接或具有exception的连接?

关于关闭WCF连接的StackOverflow有几个问题,但排名最高的答案是指这个博客: http://marcgravell.blogspot.com/2008/11/dontdontuse-using.html 当我在服务器上设置断点并让客户端挂起超过一分钟时,我遇到了这种技术的问题。 (我故意创建超时exception) 问题是客户端似乎“挂起”,直到服务器完成处理。 我的猜测是,一切都在exception后被清理干净。 关于TimeOutException ,似乎客户端的retry()逻辑将继续一遍又一遍地重新提交查询到服务器,在那里我可以看到服务器端调试器对请求进行排队,然后同时执行每个排队请求 。 我的代码不希望WCF这样做,可能是我看到的数据损坏问题的原因。 有些东西并没有完全加入这个解决方案。 什么是在WCF代理中处理故障和exception的无所不包的现代方法?

将OperationContext传播到异步WCF调用

使用WCF中的C#5 Async-Await,在等待其余代码继续在另一个线程上之后,我们将松开当前操作上下文。 (OperationContext.Current为null)。 我正在开发一个调用另一个外部服务的WCF服务。 并且在外部服务调用中使用了一些自定义绑定扩展来访问操作上下文。 所以我需要在这个调用期间传播Context,它不能将操作上下文复制到局部变量中。 我的配置看起来像这样 其中“ MyBindingExtention”访问operationcontext以获取一些信息。 public async Task GetExternalData(int value) { var oc = OperationContext.Current; //External Web service Call var response = await externalService.GetDataAsync(); return response.text; } 有没有一种好的方法可以将OperationContext传播到外部服务调用中,然后再次进入剩余的代码执行?

Wcf和接口作为参数

我有一个库,其中包含一些共享相同界面的实体。 客户和服务共享此程序集。 现在我想知道是否有办法在我的服务合同中将此接口类型作为参数,以便我可以对实现接口的所有类使用相同的方法。 实体itselve都使用datacontract-attribute及其成员使用datamember属性进行修饰。 它有可能吗? 可能与NetDataContractSerializer ? 我知道我可以用基类(一些抽象类,例如)和知识类型 – 属性来做,但我肯定更喜欢接口作为对象的标识符,因为它在客户端应用程序中广泛使用,并将简化开发。 谢谢

将服务引用添加到共享类的多个WCF服务

我正在尝试将我的WCF Web服务拆分为一些服务而不是一个巨大的服务。 但Visual Studio(Silverlight客户端)复制了两个服务共享的公共类。 这是一个简单的例子来说明我的问题。 在此示例中,有两个服务。 两者都返回“Person”类型。 默认情况下,VS将在唯一的NameSpaces下创建两个单独的Person代理。 这意味着不同服务返回的“Person”不能被客户端消费为同一个东西。 我该如何解决? 是否可以自己编写代理类? 共同 [DataContract] public class Person { [DataMember] string FirstName { get; set; } [DataMember] string LastName { get; set; } [DataMember] string PrivateData { get; set; } } StaffService.svc [ServiceContract(Namespace = “”)] public class StaffService { [OperationContract] public Person GetPerson () { return new […]

WCF – HTTP上的二进制编码抛出客户端和服务绑定不匹配exception

例外: 服务http:// localhost:1500 / MyService.svc不支持内容类型application / soap + msbin1。 客户端和服务绑定可能不匹配。 客户端配置: 服务器配置:

WCF中SOAP消息的数字签名

我在4.0中有一个WCF服务。 我需要在SOAP响应中添加数字签名。我不太确定它应该如何实现。 我相信响应应该如下面的链接所示。 https://spaces.internet2.edu/display/ISWG/Signed+SOAP+Messages 我有什么地方可以获得这方面的细节吗? 请指教。

如何设置HTTP和HTTPS WCF 4 RESTful服务?

我正在尝试使用WCF 4来设置RESTful Web服务。 我希望使用HTTP和HTTPS可以访问该服务。 默认情况下,使用以下配置创建服务,该配置适用于http但不适用于https: 然后,我可以通过稍微更改配置为此服务启用HTTPS: 我的问题是如何让服务与两者兼容?

无法连接到net.tcp:连接尝试持续了一段时间

在远程构建机器上,运行unit testing时出现以下错误。 测试方法MyNameSpace1.MyNameSpace2.Service.Test.MyPath.XYZServiceTest.FindRecord引发exception:System.ServiceModel.EndpointNotFoundException:无法连接到net.tcp://localhost/MyABCServices/XYZService.svc。 连接尝试持续时间跨度为00:00:02.0086605。 TCP错误代码10061:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808。 —> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它127.0.0.1:808 我对这台构建机器的访问权限非常有限。 我无法在构建机器上访问iis,也无法访问我在本地开发机器上执行的服务。 unit testing工作在我的本地开发机器上,但它们在构建机器上运行到上面提到的错误。 我该怎么做才能调试此错误? 我看过像检查防火墙等的东西但是我不知道怎么做? 我无法检查此服务的Windows服务是否已在构建计算机上启动并运行。 我试图登录到构建机器或将我的IIS连接到这台远程机器,但我不能。

单向异步/等待WCF中的调用

我有一个传统的WCF服务,其中包含以最经典的方式实现的许多单向操作合同: // The interface [OperationContract(IsOneWay = true, AsyncPattern = true)] IAsyncResult BeginFinalizePublishing(PageContent pageContent, AsyncCallback callback, object asyncState); void EndFinalizePublishing(IAsyncResult result); // The service public IAsyncResult BeginFinalizePublishing(PageContent pageContent, AsyncCallback callback, object asyncState) {…} 所以一切正常,现在我需要将其转换为c#5最新的async / await模式。 注意操作的单向性。 我的问题: 我想我需要从OperationContract属性中删除AsyncPattern = true 。 将IAsyncResult返回类型替换为接口中的void和类中的async void 。 为方便起见,删除开始/结束并添加Async后缀。 现在我该如何从客户端调用单向操作? 对于单向呼叫,在客户端右侧没有使用async / await? 这是正确的,将导致客户端的真正异步处理。 // The proxy public void […]