我需要将从磁盘加载的SOAP消息解析为生成的代理类型。WCF在收到来自http服务器的消息时执行此操作,因此我应该能够从磁盘执行此操作。我使用WCF使用Web服务,我从远程WSDL生成代理客户端。这是我从网络接收到的XML结构(它是用System.ServiceModel.MessageLogging记录的),我想将其解析为生成的类CRResponse。:0...当我调用Web服务的“GetCR”操作时,消息被正确转换为WCF生成的代理客户端类型GetCRResponse,但我不知道WCF是如何工作的,我需要从磁盘解析文件。我试图以这种方式解析消息:GetCRResponsebody;
我们在将Azure服务总线中继与netTcpRelayBinding和basicHttpRelayBinding一起使用时遇到速度问题。对于较小的消息大小(10K),中继以低延迟运行(100ms),但随着消息大小的增加(100K),我们会遇到看似随机的响应时间(600ms-1000ms)。我们希望改善较大消息的延迟成本。服务总线中继是否支持使用消息压缩(gzip、protobuf-net等)?有没有人成功地通过中继启用请求/响应压缩?这是trivialtosupportresponsecompressionthroughIIS,但我们希望支持请求压缩以改善我们的延迟成本。由于我们无法使
我有一个具有服务引用的项目Common。添加对Newtonsoft.json(Version6.0.2的引用后到具有服务引用和可序列化类ChatLine的同一项目(Common)[Serializable]publicclassChatLine{[JsonProperty("L")]publicstringLineId{get;set;}[JsonProperty("CT")]publicDateTimeConversationTimeInUtc{get;set;}[JsonProperty("S")]publicstringSenderId{get;set;}[JsonPropert
根据JSONspec,表示空值的正确方法是文字null。如果是这样,为什么WCF返回空响应而不是null?这是错误还是在某处记录了此行为?完整的重现示例:usingSystem;usingSystem.ServiceModel;usingSystem.ServiceModel.Web;[ServiceContract()]publicclassService1{[OperationContract(),WebGet(ResponseFormat=WebMessageFormat.Json)]publicstringGetSomeString(){return"SomeString";}
我有一个WCF服务端点,它通过流提供二进制文档。端点看起来像这样:publicStreamGetFile(intfileId){...}此服务端点的basicHttpBinding被错误地配置为使用TransferMode="Buffered"。服务端点当前由我无法控制的集成方使用。由于缓冲传输模式的内存消耗问题,我想将其更改为TransferMode="Streamed"。我能否安全地对服务绑定(bind)配置进行此更改,并期望这不会对任何集成方造成任何影响? 最佳答案 据我所知,WCF流模式传输是在客户端选择加入的,这意味着即使
目前我遇到了一个我不明白的问题。我有一个wcf客户端,它同时通过多个线程调用wcf服务(都在同一台机器上)。有时,我会遇到众所周知的System.ServiceModel.CommunicationException“接收到xxx的HTTP响应时发生错误。这可能是由于服务端点绑定(bind)未使用HTTP协议(protocol)。这也可能是由于HTTP请求上下文被服务器中止(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。”,有时它会起作用。如果服务调用成功,这似乎完全是随机的。请求很小,只是一个(int,bool,enum)调用。该请求包含ca。来自MSSQL数据库的300-5
我试图在WCF应用程序的服务器端抛出FaultException。我使用DTO作为此异常的有效负载。从某个时候(对于那种大对象)我开始在客户端收到“缓冲XML内容所需的大小超出了缓冲区配额”异常。所有绑定(bind)消息大小参数和maxDepth都设置为最大的值以排除怀疑。有人遇到过这个问题吗?网上好像还没有解决办法。设置没有帮助。 最佳答案 问题出在ClientRuntime的“MaxFaultSize”参数中,默认值为65535,因此默认情况下您无法在WCF的错误中传递大负载。要更改此值,您应该像这样编写自定义EndpointB
我目前正在将客户端应用程序迁移到.NET4.5以使用async/await。该应用程序是当前仅提供同步服务的WCF服务的客户端。我现在想知道,我应该如何异步使用这个同步服务?我正在使用channelfactories使用在服务器和客户端之间共享的服务契约(Contract)连接到WCF服务。因此,我无法使用VisualStudio或svcutil的自动生成来生成异步客户端代理。我已阅读thisrelatedquestion这是关于是否使用Task.Run在客户端包装同步调用,或者是否改为使用异步方法扩展服务契约。答案表明,服务器提供“真正的”异步方法对客户端性能更好,因为没有线程必须主
我目前正在使用二进制格式化程序(Remoting)序列化和反序列化对象以便在我的LAN中发送。我最近从2.0升级到.NET3.5。3.5是否引入了任何新类型来提高序列化性能?我查看了DataContractSerializer,但它会将任何内容序列化为底层XML权利……这肯定会增加内存占用量。通过LAN发送对象最快的序列化程序是什么?我不关心互操作或版本控制......我需要速度!我对第三方开源替代方案持开放态度。 最佳答案 听起来像ProtocolBuffers可能正是您要找的。我知道三种.NET实现:protobuf-net,p
Func是一个可序列化的类,但是当我尝试将它作为参数通过服务传递时。有人告诉我它“不是已知类型”。我试过解决方案here无济于事。非常感谢... 最佳答案 不,基本上。您也不能传递Expression,因为它与MemberInfo节点对话。最好的选择是谓词的字符串表示。 关于c#-可以通过WCF服务传递Func吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/567316/