Tag: #wcf

WCF不能用于通信,因为它处于Faulted状态

当我尝试使用Web服务时,我得到以下exception。 我的主要问题是这个例外何时发生? 在服务器或客户端? 错误在哪里? 服务器是否针对各种故障抛出此信息? 我自己做了一些看似有效的改动 它现在实际上有效。 我删除了使用并在服务客户端上添加了som清理。 if (Service != null && Service.State != CommunicationState.Faulted) { success = true; Service.Close(); } } catch (Exception ex) { msg = “Error” + Environment.NewLine + ex.Message + Environment.NewLine + ex.StackTrace; } finally{ if (!success) { if (Service != null) Service.Abort(); } } 这是例外: The communication object, System.ServiceModel.Channels.ServiceChannel, […]

如何在不使用配置文件的情况下以编程方式添加maxItemsInObjectGraph?

我已经创建了类似的EndpointAddress EndpointAddress address = new EndpointAddress(“http://example.com/services/OrderService.svc”); 但我无法以编程方式将此行为添加到此端点。 行为如下:

如何处理实现多个接口的对象的Dtos?

我们在WCF服务接口中使用Dtos,但是当Dto表示的业务对象实现多个接口并且我们想要在这些不同的上下文中返回Dtos并且还能够处理时,它们已经开始遇到问题Dtos在客户端上进行多态化。 例如,假设我们有一个IBusinessObject的接口, IBusinessObject包含几个属性,包含对象关系,对象属性等的详细信息。我有几个实现,这个实现是一个实现IBusinessObject和ILinear 。 还有ILinear其他实现,它们也不是业务对象,只是简单的线性事物。 我们的服务有一个获取业务对象的方法。 这将返回一个基础Dto类( BusinessObjectDto ),它声明IBusinessObject的常见部分(关系属性等)和LinearBusinessObjectDto ,它扩展了BusinessObjectDto并添加了关于事物线性方面的额外信息。 这很好,并使客户端能够以一定程度的多态性处理返回的BusinessObjects 。 我们还想要一种获得线性事物的方法。 这将返回一个基类LinearDto ,其中包含常见的线性详细信息。 简单的线性对象实现扩展了LinearDto ,一切都很好。 但是现在我有一个问题,因为我不能让我的LinearBusinessObjectDto从LinearDto和BusinessObjectDto扩展,因为只支持单inheritance,并且我不能使用接口,因为WCF不知道什么类型然后放入服务WDSL中的合同定义。 所以我开始为我的LinearBusinessObject 2个dtos,一个派生自BusinessObjectDto ( LinearBusinessObjectAsBusinessObjectDto ),另一个派生自LinearDto( LinearBusinessObjectAsLinearDto ),然后根据我感兴趣的界面转换每个LinearBusinessObjectAsLinearDto 。 这似乎会导致许多额外的Dto类(其中我已经有很多),所以我想知道是否有比这更好的解决方案? 或者这只是我们必须忍受的东西?

为什么我的WCF数据服务无法提供自动生成的ADO.Net EDM?

我正在尝试按照本教程: http : //msdn.microsoft.com/en-us/data/gg601462.aspx来设置ODATA服务。 我使用向导从我的SQL Server数据源创建(使用向导)和ADO.NET实体数据模型。 然后我建立了一个WCF数据服务,并告诉它使用这些实体。 它没有提供数据,而是产生了一个不透明的服务器错误,通过在服务器类def上面添加它,我可以减少不透明度: [System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)] 因此,我实际上可以看到错误。 从“通常是java”程序员的角度来看,这看起来像是一个类转换错误。 这似乎很奇怪,因为我在新安装的VS Pro 2013试用版中遵循了教程 有人能理解错误并告诉我如何通过这个吗? The server encountered an error processing the request. The exception message is ‘Expression of type ‘System.Data.Entity.Core.Objects.ObjectContext’ cannot be used for return type ‘System.Data.Objects.ObjectContext”. See server logs for more details. The exception stack trace is: at System.Linq.Expressions.Expression.ValidateLambdaArgs(Type delegateType, Expression& […]

在.net Core中调用SOAP服务

我正在将一个.net 4.6.2代码移植到一个调用SOAP服务的.net Core项目中 。 在新代码中我使用C#(由于一些配置原因,我现在还不记得为什么)。 但我得到以下例外。 收到对https://someurl.com/ws/Thing.pub.ws:Something的HTTP响应时发生错误。 这可能是由于服务端点绑定不使用HTTP协议。 这也可能是由于服务器中止HTTP请求上下文(可能是由于服务关闭)。 请参阅服务器日志以获取更多详 投掷它的代码是 try { var binding = new BasicHttpsBinding(BasicHttpsSecurityMode.Transport); binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic; var endpoint = new EndpointAddress(new Uri(“https://someurl.com/ws/TheEndpoint.pub.ws:AService”)); var thing= new TheEndpoint.AService_PortTypeClient(binding, endpoint); thing.ClientCredentials.UserName.UserName = “usrn”; thing.ClientCredentials.UserName.Password = “passw”; var response = await thing.getSomethingAsync(“id”).ConfigureAwait(false); } finally { await thing.CloseAsync().ConfigureAwait(false); } 它基于旧配置工作,调用服务是这样的, 我错过了什么? 我无法在网上找到很多这方面的信息。 希望您能够帮助我。 更新 Per […]

WCF的DataContractSerilaizer线程安全吗?

我一直在将一个相当大的系统从Remoting转换为WCF,并且一切似乎运行良好,除了我们经常遇到以下exception:“System.InvalidOperationException:Collection被修改;枚举操作可能无法执行。” 我没有任何运气跟踪它,因为它只发生在有数百个调用通过时,我只能假设它是因为一个对象被修改,因为它被序列化。 所有类都使用: [DataContract(IsReference=true)] 。 使用远程处理时没有类似的例外,所以我想知道是否有人在WCF中遇到过类似的问题或者可以让我知道它可能是序列化程序 – 在这种情况下我假设我必须编写自己的序列化程序来执行在必要时locks (这是我宁愿避免的一项重大任务)。 以下是堆栈跟踪: WCF Error: at System.Collections.Generic.List1.Enumerator.MoveNextRare() at WriteArrayOfLineToXml(XmlWriterDelegator , Object , XmlObjectSerializerWriteContext , CollectionDataContract ) at System.Runtime.Serialization.CollectionDataContract.WriteXmlValue(XmlWriterDelegator xmlWriter, Object obj, XmlObjectSerializerWriteContext context) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerialize(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle declaredTypeHandle) at System.Runtime.Serialization.XmlObjectSerializerWriteContext.InternalSerializeReference(XmlWriterDelegator xmlWriter, Object obj, Boolean isDeclaredType, Boolean writeXsiType, Int32 declaredTypeID, RuntimeTypeHandle […]

ClientBase不实现IDisposable成员

如果Dispose()方法声明不可见/声明,System.ServiceModel.ClientBase抽象类如何实现IDisposable接口? 如果我尝试做同样的事我得到一个错误,无法编译 abstract class ATeste : IDisposable { } ‘ATeste’没有实现接口成员’System.IDisposable.Dispose()’ 我正在使用VS 2010和Framework 4.0。 检查ClientBase声明: // Summary: // Provides the base implementation used to create Windows Communication Foundation // (WCF) client objects that can call services. // // Type parameters: // TChannel: // The channel to be used to connect to the service. public abstract class […]

WCF ChannelFactory State属性

ChannelFactory拥有State属性意味着什么? 我知道创建的频道可以具有基于连接的状态。 但我很困惑为什么ChannelFactory也有这样的连接状态。 它是否也连接到WCF服务?

Ria Services将复杂对象作为参数传递给查询域服务方法

我遇到了与此线程中指定的问题类似的WCF RIA服务的一些困难。 我正在创建的域服务方法(Query方法)应该采用复杂的对象参数。 示例域服务方法: public ComplexObjectResult GetComplexObject(ComplexObjectParameter test) { //do stuff } 参数对象: public class ComplexObjectParameter { [Key] public decimal ID { get; set; } … other fields } 我得到此编译错误: 错误70域操作条目’GetComplexObject’的参数’test’必须是预定义的可序列化类型之一 。 在网上搜索了一下后,我发现了这个msdn线程 。 它声明这是RIA服务的限制,并且该线程没有指定任何体面的解决方法。 现在似乎有一些肮脏的解决方法: 更改复杂参数以键入字符串和序列化/反序列化参数对象我自己,我发现一个非常hacky解决方案。 在域服务方法上使用[Invoke]标签并放弃所有RIA跟踪function,我首先使用RIA。 是否有替代方案可以提供缺点较少的上述解决方案? 是否有人为此问题找到了更优雅的解决方法? 谢谢

无法在Fiddler中显示netTcpBinding请求

我有一个有两个端点的WCF服务。 一个使用basicHttpBinding,另一个使用netTcpBinding。 这是我的配置…… 但是,当我使用该服务时,我试图比较两个请求之间的差异。 所以我正在运行小提琴手来做这件事。 我可以在Fiddler中看到basicHttpBinding请求,但我无法显示net.tcp://请求。 我该怎么做才能看到这种流量?