接收对 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)
...全文
6905 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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
  • 打赏
  • 举报
回复
先自己顶一下

111,093

社区成员

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

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

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