草庐IT

c# - 如何在 wcf restful 服务中传递多个参数?

IService.cs[OperationContract][WebGet(UriTemplate="/IsValidUser?userid={userid}&password={password}",RequestFormat=WebMessageFormat.Json,ResponseFormat=WebMessageFormat.Json)]stringIsValidUser(stringuserid,stringpassword);Service.cspublicstringIsValidUser(stringuserid,stringpassword){if(userid==

c# - 从 C# 将原始 SOAP XML 直接发送到 WCF 服务

我有一个WCF服务引用:http://.../Service.svc(?WSDL)我有一个包含兼容SOAP信封的XML文件...现在,我想通过一些C#代码将此原始数据直接发送到服务(并接收响应),而不使用VisualStudio服务引用。这是否可能,如果可能,如何实现? 最佳答案 你可以使用UploadString.您需要适本地设置Content-Type和SOAPActionheader:classProgram{staticvoidMain(string[]args){using(varclient=newWebClient()

c# - 如何使用 WCF 服务暂时停止证书错误

我正在测试我创建的WCFWeb服务的早期版本。在客户端,当我使用VS来“添加服务引用”时一切正常。但是当我尝试使用该服务时出现错误,CouldnotestablishtrustrelationshipfortheSSL/TLSsecurechannelwithauthority**其中星星代表服务器的IP地址。无论如何,服务器上都有一个安全证书,但它只是为了测试而自行生成的,所以我暂时不担心证书错误。在客户端,已经为我生成了一个app.config,那么我需要更改哪些设置才能暂时忽略证书错误? 最佳答案 在客户端初始化WCF服务之前

c# - 为什么 WCF/JSON 不为 null 返回值返回 `null`?

根据JSONspec,表示空值的正确方法是文字null。如果是这样,为什么WCF返回空响应而不是null?这是错误还是在某处记录了此行为?完整的重现示例:usingSystem;usingSystem.ServiceModel;usingSystem.ServiceModel.Web;[ServiceContract()]publicclassService1{[OperationContract(),WebGet(ResponseFormat=WebMessageFormat.Json)]publicstringGetSomeString(){return"SomeString";}

c# - 从 wcf 绑定(bind) transferMode 从 "Buffered"更改为 "Streamed"是否被视为客户端的重大更改?

我有一个WCF服务端点,它通过流提供二进制文档。端点看起来像这样:publicStreamGetFile(intfileId){...}此服务端点的basicHttpBinding被错误地配置为使用TransferMode="Buffered"。服务端点当前由我无法控制的集成方使用。由于缓冲传输模式的内存消耗问题,我想将其更改为TransferMode="Streamed"。我能否安全地对服务绑定(bind)配置进行此更改,并期望这不会对任何集成方造成任何影响? 最佳答案 据我所知,WCF流模式传输是在客户端选择加入的,这意味着即使

c# - 抛出 FaultException 时 WCF 错误 "The size necessary to buffer the XML content exceeded the buffer quota"

我试图在WCF应用程序的服务器端抛出FaultException。我使用DTO作为此异常的有效负载。从某个时候(对于那种大对象)我开始在客户端收到“缓冲XML内容所需的大小超出了缓冲区配额”异常。所有绑定(bind)消息大小参数和maxDepth都设置为最大的值以排除怀疑。有人遇到过这个问题吗?网上好像还没有解决办法。设置没有帮助。 最佳答案 问题出在ClientRuntime的“MaxFaultSize”参数中,默认值为65535,因此默认情况下您无法在WCF的错误中传递大负载。要更改此值,您应该像这样编写自定义EndpointB

c# - 异步使用同步 WCF 服务

我目前正在将客户端应用程序迁移到.NET4.5以使用async/await。该应用程序是当前仅提供同步服务的WCF服务的客户端。我现在想知道,我应该如何异步使用这个同步服务?我正在使用channelfactories使用在服务器和客户端之间共享的服务契约(Contract)连接到WCF服务。因此,我无法使用VisualStudio或svcutil的自动生成来生成异步客户端代理。我已阅读thisrelatedquestion这是关于是否使用Task.Run在客户端包装同步调用,或者是否改为使用异步方法扩展服务契约。答案表明,服务器提供“真正的”异步方法对客户端性能更好,因为没有线程必须主

c# - 可以通过 WCF 服务传递 Func<T,bool> 吗?

Func是一个可序列化的类,但是当我尝试将它作为参数通过服务传递时。有人告诉我它“不是已知类型”。我试过解决方案here无济于事。非常感谢... 最佳答案 不,基本上。您也不能传递Expression,因为它与MemberInfo节点对话。最好的选择是谓词的字符串表示。 关于c#-可以通过WCF服务传递Func吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/567316/

c# - 如何通过 WCF 处理大文件上传?

我正在考虑将WCF用于一个项目,该项目需要人们能够将大文件(64MB-1GB)上传到我的服务器。我将如何使用WCF处理这个问题,可能具有恢复上传的能力。为了处理更大的客户群,我想通过WCF测试JSON。这将如何影响文件上传?可以从JSON完成,还是他们需要为上传部分切换到REST? 最佳答案 如果你想上传大文件,你肯定需要查看WCFStreamingMode.基本上,您可以在绑定(bind)上更改传输模式;默认情况下,它是缓冲的,即整个消息需要在发送方缓冲、序列化,然后作为一个整体传输。使用流式传输,您可以定义单向流式传输(仅用于上

c# - 检测 WCF 中的套接字断开连接

我们正在构建WCF服务器(.NET4.0)。它只会使用net.tcp传输。当客户端关闭TCP连接时,服务器会收到未处理的CommunicationException,并终止。Q1。我如何处理CommunicationException以便服务器不会终止并继续为其他客户端提供服务?Q2。在处理程序中,如何获取已中止session的SessionId?我需要它来清理一些特定于session的数据。提前致谢!附言连接是通过Internet进行的,因此无论客户端是否正常断开连接,套接字都可能随时关闭。 最佳答案 任何WCFchannel实现