WCF 接收我服务的 HTTP 响应时发生错误

错误内容:

System.ServiceModel.CommunicationException: 接收对 https://xx.com/xx.svc的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。 ---> System.Net.WebException: 基础连接已经关闭: 接收时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。
   在 System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
   在 System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)
   在 System.Net.TlsStream.EndRead(IAsyncResult asyncResult)
   在 System.Net.PooledStream.EndRead(IAsyncResult asyncResult)
   在 System.Net.Connection.ReadCallback(IAsyncResult asyncResult)
   --- 内部异常堆栈跟踪的结尾 ---
   在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   在 System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
   --- 内部异常堆栈跟踪的结尾 ---

Server stack trace:
   在 System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
   在 System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
   在 System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
   在 System.ServiceModel.Channels.ServiceChannelProxy.InvokeEndService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   在 System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]:
   在 System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   在 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   在 Sinopec.UC.Client.Groups.ChatGroupSev.IChatGroupPersistence.EndGetGroupListByMember(IAsyncResult result)
   在 Sinopec.UC.Client.Groups.ChatGroupSev.ChatGroupPersistenceClient.OnEndGetGroupListByMember(IAsyncResult result)
   在 System.ServiceModel.ClientBase`1.OnAsyncCallCompleted(IAsyncResult result)

解决方法1:

此类型错误发生时,有许多方案。

首先检查您提供适当的 [DataContract] 和 [DataMember] 是否这不提供然后这种类型的错误发生。您必须编写 [DataContract] 以上类,您传递的响应,并写入 [DataMember] 以上类成员,是去客户端响应。

[DataContract]
class Program
{
  [DataMember]
  public string Exampl{get;set}
}

解决方法2:

详细监听客户端请求过程

如果一些 minvalue 的数据类型是通过,检查响应中。这意味着一些时间数据成员不是初始化,时间它采取它 Minvalue。eg MinValue int 的是 ‘-2147483648‘,所以一段时间不能序列化并引发错误。

如果您有跟踪这种类型的错误,然后写下你的服务器端 web.config 中的代码下面的

<system.diagnostics>
<sources>
  <source name="System.ServiceModel" switchValue="Information, ActivityTracing"    propagateActivity="true">
    <listeners>
      <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener"      initializeData= "D:\Traces.svclog"/>
    </listeners>
  </source>
</sources>

显示结果:

服务端异常,详细消息:

尝试对参数 http://tempuri.org/ 进行序列化时出错: GetModelResult。InnerException 消息是“数据协定名称为“AboveUser_CD87D9757642C65F2A0EC43C3809842CB7DC067138FCEBB7FD761F5193DFA9B9:http://schemas.datacontract.org/2004/07/System.Data.Entity.DynamicProxies”的类型“System.Data.Entity.DynamicProxies.AboveUser_CD87D9757642C65F2A0EC43C3809842CB7DC067138FCEBB7FD761F5193DFA9B9”不是所需的类型。
请考虑使用 DataContractResolver(如果你正在使用 DataContractSerializer),或将任何未知类型以静态方式添加到已知类型的列表。
例如,可以使用 KnownTypeAttribute 属性,或者将未知类型添加到传递给序列化程序的已知类型列表。”。有关详细信息,请参见 InnerException。
时间: 2024-10-10 18:03:49

WCF 接收我服务的 HTTP 响应时发生错误的相关文章

问题解决_WCF_WCF 接收我服务的 HTTP 响应时发生错误

原文地址:http://www.cnblogs.com/tianma3798/p/5470974.html 错误内容: System.ServiceModel.CommunicationException: 接收对 https://xx.com/xx.svc的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致.有关详细信息,请参见服务器日志. ---> System.Net.WebExcep

接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的。这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。

[2015/8/5 19:28:49]错误信息:接收对 http://192.168.1.18:8001/ObtainData/Service 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致.有关详细信息,请参见服务器日志.异常类型:System.ServiceModel.CommunicationException程序集:mscorlib方法:Void HandleReturnMes

System.ServiceModel.CommunicationException: 接收HTTP 响应时发生错误

具体错误信息如下: System.ServiceModel.CommunicationException: 接收对 http://110.110.110.110/TestService/TestService.svc 的 HTTP 响应时发生错误.这可能是由于服务终结点绑定未使用 HTTP 协议造成的.这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致.有关详细信息,请参见服务器日志. ---> System.Net.WebException: 基础连接已经关闭: 接收时发

WCF 获取数据对象时,报“基础连接已经关闭: 接收时发生错误”

今天,在使用WCF返回一个对象时,遇到一个错误:基础连接已经关闭: 接收时发生错误.经过大半天的排查,原来是一个不起眼的东西在搞鬼: this.Configuration.ProxyCreationEnabled = true; 就是上面的代码中的 true 导致了程序报错,之后把 true 改成了 false 问题就解决了. 微软的官方对ProxyCreationEnabled的解释中这样阐述:即使使用此旗標來啟用 Proxy 建立,也只會針對符合進行 Proxy 處理需求的實體類型來建立 P

WCF问题集锦:基础连接已经关闭 接收时发生错误

今天,进行单元测试时,当执行到第二个测试类时--之前从来没有错误的测试居然报了:基础连接已经关闭 接收时发生错误.想想今天唯一改动的是在测试代码中加了下列两个执行体: [TestFixtureSetUp] public void Set() { CommonFuns.SetTime(); } [TestFixtureTearDown] public void Restore() { CommonFuns.RestoreTime(); } 其中,Set用来设置系统当前时间为制定值,Restore用

分析案例:界面提示“基础链接已经关闭:接收时发生错误”----本质为StackOverflow

问题描述: 一个业务复杂.执行时间很长的功能,经常报出“基础链接已经关闭:接收时发生错误”,很是蹊跷... 问题分析: 首先,查阅应用服务器的系统日志,发现问题发生时总是会伴随着w3wp进程崩溃的错误,很有问题呀... 错误存储段 ,类型 0 事件名称: APPCRASH 响应: 不可用 Cab Id: 0 问题签名: P1: w3wp.exe P2: 7.5.7601.17514 P3: 4ce7afa2 P4: oracommon11.dll P5: 11.2.0.3 P6: 4eb215c

HttpWebRequest 基础连接已经关闭: 接收时发生错误

HttpWebRequest request = null; Stream webStream = null; HttpWebResponse response = null; StreamReader reader = null; string responseString = ""; try { byte[] bf = Encoding.UTF8.GetBytes(postString); request = WebRequest.Create(url) as HttpWebReq

【已解决】Https请求——基础连接已经关闭 发送时发生错误

本人在做商用项目的推送消息功能时,借助第三方推送服务.这里避免有打广告的嫌疑,就不报名字了.由于是通过调用API接口,所以Post方法是自己写的,但是在开发环境是可以正常推送的,但是一上线就出各种问题.楼主猜测可能是开发环境测试时,推送的消息比较少,而线上推送消息很多,从而导致和连接数相关的错误.下文很有帮助,记录于此. 报的错误为:1. "基础连接已经关闭: 发送时发生错误"; 2016年10月25日18:56:53更新后来本篇的所有方法都尝试了,发现最后也没解决问题.最后问题终于解

解决连接vcenter (客户端无法向服务器发送完整的请求。(基础连接已经关闭:发送时发生错误。)) 问题

vCenter版本 5.5 vCenter 安装在server 2008 r2上面,今天补丁一打,重启后就无法连接vcenter了,起初以为是补丁的问题导致vcenter工作不正常,卸载了补丁依旧无法正常连接. 报未知连接错误,(客户端无法向服务器发送完整的请求.(基础连接已经关闭:发送时发生错误.)) 服务里面 vmware Virtualcenter server 服务启动不了. 倒腾了很久,, 很久   ,,    重装vcenter server 5.5的时候提示 vcenter 443