接收对 https://xx.com/xx.svc的 HTTP 响应时发生错误。这可能是由于服务终结点绑定未使用 HTTP 协议造成的

颠倒的企鹅 2013-05-31 01:29:40
WPF应用程序调用WCF是出现这个了,这怎么解决?

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)
...全文
5839 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
衣舞晨风 2015-06-02
  • 打赏
  • 举报
回复
将返回的datatable想、类型修改为dataset即可
隽永Jasen 2014-12-01
  • 打赏
  • 举报
回复
有可能你的DataTable没有命名: myDataTable.TableName = "TaskList";
qiqiwang00 2014-09-04
  • 打赏
  • 举报
回复
我的也是数据类型的原因,不能是object
落落微暖 2014-07-14
  • 打赏
  • 举报
回复
如果时运行一段时间后才报这个错误时什么原因呢
kslynn 2014-01-14
  • 打赏
  • 举报
回复
此问题已解决,是由于 ReturnObj 不能是object的缘故. 也是说WCF在回传对象时一般必须指定要回传的对象的类型.不然无法序列化, 因为有的类是无法序列化的. 当然也有大神说, 可以使用穷举出所有的类型的办法. 不过,这也是明确告知回传对象的类型的做法.还不如直接回传明确的类型来的方便.
Color4days 2014-01-14
  • 打赏
  • 举报
回复
引用 6 楼 arlin_hou 的回复:
除此外,还可能有什么原因? 我也遇到了类似的错误。但是情况不同的是,我有两个方法,其中一个成功执行了,而另一个没有成功。 两方法的签名如下: [OperationContract] DataTable GetUserMenus(string userCode); [OperationContract] ResultInfo GetDataTable(string sqlGuid, Parameter[] parameters); 第一个方法能够成功执行,但是第二个调用时,就发生如题的错误 方法返回的对象 ResultInfo 代码如下: [DataContract] public class ResultInfo { public ResultInfo(){} public ResultInfo(Boolean isnormal, int errcode, string errmsg) { _IsNormal = isnormal; _ErrCode = errcode; _ErrMsg = errmsg; } private Boolean _IsNormal; private int _ErrCode; private string _ErrMsg; [DataMember] public Boolean IsNormal { get { return _IsNormal; } set { _IsNormal = value; } } [DataMember] public int ErrCode { get { return _ErrCode; } set { _ErrCode = value; } } [DataMember] public string ErrMsg { get { return _ErrMsg; } set { _ErrMsg = value; } } [DataMember] public Object ReturnObj { get; set; } } 不知道各位大侠遇到过没有?
第二个在你的datacontract上加上序列
namespace Diodes.BPMService.BPMInterface
{
    /// <summary>
    /// AD用户信息
    /// </summary>
    [Serializable]
    [DataContract]
    public class ADUserInfo
    {
        /// <summary>
        /// 站点
        /// </summary>
        [DataMember]
        public string SiteCode { get; set; }

        /// <summary>
        /// 域名
        /// </summary>
        [DataMember]
        public string Domain { get; set; }

        /// <summary>
        /// 工号
        /// </summary>
        [DataMember]
        public string EmployeeNo { get; set; }

        /// <summary>
        /// 登录名
        /// </summary>
        [DataMember]
        public string LoginAccount { get; set; }

        /// <summary>
        /// AD用户名
        /// </summary>
        [DataMember]
        public string ADAccount { get; set; }

        /// <summary>
        /// 中文名字
        /// </summary>
        [DataMember]
        public string CName { get; set; }

        /// <summary>
        /// 英文名字
        /// </summary>
        [DataMember]
        public string EName { get; set; }

        /// <summary>
        /// 座机号码
        /// </summary>
        [DataMember]
        public string Phone { get; set; }

        /// <summary>
        /// 移动号码
        /// </summary>
        [DataMember]
        public string Mobile { get; set; }

        /// <summary>
        /// 邮箱地址
        /// </summary>
        [DataMember]
        public string Email { get; set; }

        /// <summary>
        /// Sid
        /// </summary>
        [DataMember]
        public string Sid { get; set; }
    }
}
kslynn 2013-12-26
  • 打赏
  • 举报
回复
除此外,还可能有什么原因? 我也遇到了类似的错误。但是情况不同的是,我有两个方法,其中一个成功执行了,而另一个没有成功。 两方法的签名如下: [OperationContract] DataTable GetUserMenus(string userCode); [OperationContract] ResultInfo GetDataTable(string sqlGuid, Parameter[] parameters); 第一个方法能够成功执行,但是第二个调用时,就发生如题的错误 方法返回的对象 ResultInfo 代码如下: [DataContract] public class ResultInfo { public ResultInfo(){} public ResultInfo(Boolean isnormal, int errcode, string errmsg) { _IsNormal = isnormal; _ErrCode = errcode; _ErrMsg = errmsg; } private Boolean _IsNormal; private int _ErrCode; private string _ErrMsg; [DataMember] public Boolean IsNormal { get { return _IsNormal; } set { _IsNormal = value; } } [DataMember] public int ErrCode { get { return _ErrCode; } set { _ErrCode = value; } } [DataMember] public string ErrMsg { get { return _ErrMsg; } set { _ErrMsg = value; } } [DataMember] public Object ReturnObj { get; set; } } 不知道各位大侠遇到过没有?
PaulyJiang 2013-07-04
  • 打赏
  • 举报
回复
方法返回的对象,不仅仅要在Class上添加DataContract 还要在属性上添加DataMember
PaulyJiang 2013-07-04
  • 打赏
  • 举报
回复
序列化问题,我刚刚也遇到 解决了
颠倒的企鹅 2013-06-05
  • 打赏
  • 举报
回复
引用 2 楼 findcaiyzh 的回复:
ystem.Net.WebException: 基础连接已经关闭: 接收时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。 这类的错误,基本就是网络不通,请确保WPF程序所在机器能够在80端口访问到web service.
从浏览器是可以访问到的,但引用后就不行了
宝_爸 2013-05-31
  • 打赏
  • 举报
回复
ystem.Net.WebException: 基础连接已经关闭: 接收时发生错误。 ---> System.IO.IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。 ---> System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。 这类的错误,基本就是网络不通,请确保WPF程序所在机器能够在80端口访问到web service.
颠倒的企鹅 2013-05-31
  • 打赏
  • 举报
回复
先自己顶一下
Re:CCNA_CCNP 思科网络认证 《 广域网 帧中继和永久虚电路 》======================# 本章课程大纲 广域网与局域网的区别 广域网连接类型 典型的广域网封装协议 广域网①HDLC协议的配置和应用场景 ②PPP协议的应用场景和配置 ③PPPoE协议实现拨号上网 配置路由器广域网接口支持④帧中继(重点)永久虚电路 # 广域网与局域网的区别 局域网(Local Area Network),简称LAN,是指在某一区域内由多台计算机互联成的计算机组。一般企业或机构自己购买设备,将物理位置较近的办公区的计算机使用网络设备连接起来,一般覆盖范围是几千米以内(光纤组网)。 广域网(Wide Area Network),简称WAN,是一种跨越大的、地域性的计算机网络的集合。由专业的Internet服务器提供商(ISP)提供广域网连接,网通或电信。广域网的带宽由企业所付的费用决定,比如我们上网的ADSL就是租用网通或电信的服务。 # 广域网连接类型 1. 专线(Leased lines)                (当前费用降低) 电路交换  2. 电路交换(Circuit Switching) (早期过气技术...) 3. 包交换(Packet Switching)    (性价比较高且灵活性强)(本章重点) # 典型的广域网封装协议 R1(config-if)#encapsulation ?                     //重新封装(12种)  frame-relay     Frame Relay networks  hdlc                 Serial HDLC synchronous(default)  ppp                  Point-to-Point protocol ... ... # 配置路由器:广域网接口使用HDLC协议# 配置广域网链路使用PPP协议:搭建实验环境# 搭建PPPoE拨号实验环境:实现路由器类DHCP分配各项资源# 帧中继和永久虚电路(本章重点) 帧 数据链路层:帧[frame] [freɪm] 网络层:数据包[packet] 传输层:数据段[segment] [ˈseɡmənt] 中继 中继(Relay)是两个交换中心之间的一条传输通路。 中继线是承载多条逻辑思维链路,在一条物理链路实现。 中继设备(帧中继交换机),将强或归正数据长途传输 帧中继(frame relay) 通过帧标记的复用技术 (类比trunk干道链路:vlan标记的复用计算) # 帧(数据链路层)中继 帧中继已成为近几十年WAN(广域网)服务最流行的技术之一。 帧中继默认情况下归为非广播多路访问(NBMA)网络, 即默认情况下不在网络上发送像RIP更新这样的广播包。 帧中继是从X.25技术发展来的。 永久虚电路(Permanent Virtual Circuits,PVC)是目前最常用的类型。 Permanent [ˈpɜːmənənt] adj. 永久的 永久 即电信公司在内部创建映射,只要你付费,虚电路就一直有效。 交换虚电路(Switch Virtual Circuits,SVC)更像电话呼叫。 当数据需要传输,建立虚电路; 数据传输完成后,拆除虚电路。 帧中继PVC使用 数据链路连接标识符 (Data Link Connection Identity,DLCI[帧标记])标识DTE设备 控制钟频率的是DCE,被动端设备DTE-----------------------------              

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧