草庐IT

wcf-authentication

全部标签

c# - WCF 服务中的 HttpContext 为空?

这是我的代码行,它在HttpContext.Current上抛出错误stringpostData="username="+HttpContext.Current.Server.UrlEncode(USERNAME); 最佳答案 这很正常。WCFWeb服务中没有HTTP上下文。WCF服务甚至可能不托管在Web服务器内。您可以在控制台应用程序中托管。有一个技巧可以让你设置ASP.NETCompatibilityMode:但我不建议您这样做。我会这样做:varpostData="username="+HttpUtility.UrlEnco

c# - 如何检查 net.tcp WCF 服务的可用性

我的WCF服务器需要定期启动和关闭,客户端有时会使用服务器,但如果它关闭了,客户端就忽略它。所以每次我需要使用服务器服务时,我都会检查连接状态,如果它没有打开,我就打开它。问题是,如果我在服务器关闭时尝试打开,则会出现延迟,从而影响性能。我的问题是,是否有办法执行某种myClient.CanOpen()?所以我想知道是否有必要打开与服务器的连接。 最佳答案 有一个WS-Discovery的实现可以让您监听您的服务的上/下公告。这也是一种非常方便的服务地址解析形式,因为它利用UDP多播消息来查找服务,而不是在客户端配置一组地址。WS-

c# - 通过 WCF 发送元组对象?

System.Tuple类是否受WCF的数据契约序列化程序支持(即,我能否将Tuple对象传递给WCF调用和/或接收它们作为部分或全部结果)?我找到了thispage,但不是我所希望的明确、明确的“您可以使用WCF发送和接收元组”的答案。我猜你可以,只要Tuple本身的所有类型within都受DataContractSerializer支持——任何人都可以向我提供更明确的答案?谢谢。 最佳答案 Tuple类型标有SerializableAttribute,因此,如果您在其中存储的类型是可序列化的,那么它们也应该能够被WCF序列化。查

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在客户端包装同步调用,或者是否改为使用异步方法扩展服务契约。答案表明,服务器提供“真正的”异步方法对客户端性能更好,因为没有线程必须主