Tag: #wcf

如何在WCF服务上设置密码?

我正在开发一个由我们的其他软件调用的WCF服务,用于将错误信息发送到我们的数据库。 问题是,因为它是一个在线服务,它不安全,所以我想知道服务是否可以请求密码(即当我们调用服务时,我们必须配置密码或类似的东西)。 我用Google搜索了一下,但对于这么简单的事情来说,这一切看起来都很复杂……你们可以帮帮我吗? 编辑: 我们的想法是通过我的软件进行身份validation,而无需用户登录。

WCF服务不会对枚举值进行反序列化

我构建了一个WCF服务,并且有一个看起来像这样的部分: [ServiceContract] public class Service { [OperationContract] public SomethingElse[] Method(Code a, params Something[] b) { … } } [DataContract] public class Something { [DataMember] public string Stuff {get;set;} [DataMember] public Status MyStatus {get;set;} public string ServerSideField {get;set;} } [DataContract] public class SomethingElse { [DataMember] public Status MyStatus {get;set;} } [DataContract] public enum Status { [EnumMember] […]

将Structs与WCF服务一起使用

有没有关于使用结构作为WCF服务的返回类型的官方建议? 我目前正在与我没有写的服务进行互动,并发现自己受到启发,要求查看我的烦恼是否合理。 我过去总是使用类 – 可能部分是因为这是样本总是显示的,但正如我现在想的那样,出于其他“直观”的原因: 我通过定义一个单独的项目开始了契约风格,这个项目的接口代表了服务来回传递的类型。 我使用LINQ很多,因此对于可空性的测试是隐含的引用类型,而对于结构和其他值类型,我总是需要标记为可空。 虽然我承认它比我脑子里的项目符号列表更直观,但是有些东西会马上来找我。 我想问这个问题,因为我正在处理一个返回结构的服务,并且在处理返回值时必须写: var foo = Bar.Value.MyField; 代替 var foo = Bar.Value;

wcf将enum反序列化为字符串

我正在尝试使用WCF使用RESTful Web服务。 我无法控制Web服务的格式,所以我必须在这里和那里做一些解决方法。 然而,我似乎无法解决的一个主要问题是如何使WCF将枚举反序列化为字符串。 这是我的代码(显然名称已更改): [DataContract] public enum Foo { [EnumMember( Value = “bar” )] Bar, [EnumMember( Value = “baz” )] Baz } [DataContract] public class UNameIt { [DataMember( Name = “id” )] public long Id { get; private set; } [DataMember( Name = “name” )] public string Name { get; private set; } [DataMember( […]

添加服务引用提供exception:无法连接到远程服务器

从控制台应用程序客户端调用时,我的WCF服务返回结果。 然而,它正在显示 例外:无法连接到远程服务器 实际错误: 无法调用该服务。 可能的原因:服务离线或无法访问; 客户端配置与代理不匹配; 现有代理无效。 有关更多详细信息,请参阅堆栈跟踪。 您可以尝试通过启动新代理,还原到默认配置或刷新服务来进行恢复。 错误详情: 由于内部错误,服务器无法处理请求。 有关错误的更多信息,请在服务器上启用IncludeExceptionDetailInFaults(来自ServiceBehaviorAttribute或配置行为)以将exception信息发送回客户端,或者根据Microsoft .NET Framework SDK文档启用跟踪和检查服务器跟踪日志。 服务器堆栈跟踪:System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息回复,MessageFault错误,字符串操作,MessageVersion版本,FaultConverter faultConverter),位于System的System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime操作,ProxyRpc和rpc)。 ServiceModel.Channels.ServiceChannel.Call(String action,Boolean oneway,ProxyOperationRuntime operation,Object [] ins,Object [] outs,TimeSpan timeout)在System的System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall,ProxyOperationRuntime操作)。 ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage消息) 在[0]处重新抛出exception:在System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg,IMessage retMsg)处于IJiraService.GetProjects的System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&msgData,Int32类型)处( )在JiraServiceClient.GetProjects() 请注意,当Fiddler运行时,该服务工作正常。但是,如果我关闭Fiddler,那么它显示exception: 这是Fiddler日志(当我得到数据时): TTP / 1.1 200连接成立日期:2015年8月6日星期四14:39:22 GMT代理连接:Keep-Alive Via:1.1 localhost.localdomain 加密的HTTPS流量流经此CONNECT隧道。 在Fiddler中启用了HTTPS解密,因此在此隧道中运行的解密会话将显示在“Web会话”列表中。 安全协议:Tls Cipher:Aes128 128bits哈希算法:Sha1 160bits密钥交换:ECDHE_RSA(0xae06)256bits ==服务器证书========== [主题] CN = * .atlassian.net,O =“Atlassian […]

资源池“default”中没有足够的系统内存来运行此查询。 在sql上

我有一个运行服务,每分钟可以获得50-100个查询。 这些都不是高成本的查询。 此服务已运行约3-4个月,没有任何错误。 突然几天前,它开始提供“资源池中没有足够的系统内存’默认’来运行此查询。” 偶尔会出错。 当我调查问题时,我看到sqlservr.exe正在使用~1.5 gb ram和%25的CPU(全部为1 / 4CPU)。 当我重新启动sqlservr.exe ,ram从~50mb开始并慢慢增加直到它变为~1.5gb然后导致使用它的应用程序崩溃。 在我进行了一些研究后,我发现它是由我使用的sql server版本引起的。 这是限制数字的快速版本。 所以我将我的sql server从‘2008r2 express’升级到‘2012 enterprise’ 。 当我启动服务时,我认为我的问题终于结束了,因为服务只使用了~60mb的内存,但不幸的是在一个小时内同样的问题开始发生,但这次我在windows任务管理器上看到的已用内存仍然是~60mb,没有超出任何限制。 我在Wcf服务中使用EntityFramework作为ORM。 SqlQueryNotification ,我有一些缓存操作的SqlQueryNotification (代理和东西)系统。 我错过了一些关键的配置点吗? 或者6GB的内存和我的4 CPU真的不够用吗? 但它不可能是因为同样的负载就像3个月一样,并且当时没有任何错误,并且代码也没有任何变化。

如何从WCF中的客户端消息检查器获取标头值

我正在为我正在处理的一些服务创建一个Web测试客户端,并且作为其要求的一部分,我希望能够显示完整的请求和响应SOAP消息(以及用户的HTTP头)。 我实现了一个实现IClientMessageInspector的MessageInspector类,最着名的是BeforeSendRequest和AfterReceiveReply方法,分别用于访问请求和响应消息。 捕获响应(AfterReceiveReply)效果很好,但捕获请求只能部分工作。 我可以访问大部分消息,但SOAP标头和HTTP标头都是空的。 在Fiddler中查看请求,我可以看到WCF正在SOAP消息中发送一个Security头和一堆HTTP头。 我的BeforeSendRequest方法非常简单……它的要点是…… public object BeforeSendRequest(ref Message request, IClientChannel channel) { this.RequestMessage = request.ToString(); // Security header is missing from message // Try to get HTTP headers object req; // req is always null if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out req)) { this.RequestHeaders = ((HttpRequestMessageProperty)req).Headers; } return null; } 我不确定为什么缺少HTTP和安全标头。 有一个更好的方法吗? 韦恩

WebServiceexception – 基础连接已关闭:发送时发生意外错误

我编写了一个以下方法来从客户端Web服务检索XML响应。 在下面的代码中,我收到错误{“无法从传输连接读取数据:现有连接被远程主机强行关闭。”} 请帮忙。 代码下面出错 WebResponse webResponse = req.GetResponse(); 调用WebService的方法 – [WebMethod] public XmlDocument GetData() { string sError = “”; string sApiSession; DateTime dtRequested = DateTime.Now; XmlDocument xmlDoc = new XmlDocument(); XDocument xDoc = new XDocument(); try { NetworkCredential creds = new NetworkCredential(); creds.UserName = System.Configuration.ConfigurationManager.AppSettings.Get(“UserName”); creds.Password = System.Configuration.ConfigurationManager.AppSettings.Get(“Password”); WebRequest req = WebRequest.Create(System.Configuration.ConfigurationManager.AppSettings.Get(“Services”)); req.Method = System.Configuration.ConfigurationManager.AppSettings.Get(“Method”); […]

从另一方收到了不安全或不正确安全的故障

我有一个调用WCF服务的Windows程序。 此服务经过几次非常缓慢,最终会遇到此错误。 重新启动后再次启动服务。 真诚。

WCF Rest服务接收对象为null

我有WCFrest服务,期望对象作为输入。 [WebInvoke(Method = “POST”, UriTemplate = “SaveItem”, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] [OperationContract] public string SaveItem(Item item) { string retValue; using (var business = new ItemBusiness()) { retValue = business.SaveItem(item).ToString(); } return retValue; } 项目类如下所示。 [DataContract] public class Item { [DataMember] public string UserId { get; set; } [DataMember] public string […]