调用部署在本机IIS服务器的WCF服务并返回数据DataTable,一直报错:远程主机强迫关闭了一个现有的连接,但是服务访问正常_雅格小京的博客-程序员秘密

技术标签: DataTable  iis  数据  wcf服务  Web应用开发  WCF  

调用WCF服务并返回数据DataTable,WCF服务部署在本机IIS服务器,浏览器访问正常。

但是调用时,返回DataTable数据就报错:远程主机强迫关闭了一个现有的连接

远程主机强迫关闭了一个现有的连接。

说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接。

源错误: 
行 153:        
行 154:        public System.Data.DataTable GetClientList(string str) {
行 155:            return base.Channel.GetClientList(str);
行 156:        }
行 157:        

堆栈跟踪: 

[SocketException (0x2746): 远程主机强迫关闭了一个现有的连接。] System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags socketFlags) +6556175 System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +130 [IOException: 无法从传输连接中读取数据: 远程主机强迫关闭了一个现有的连接。。] System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size) +296 System.Net.PooledStream.Read(Byte[] buffer, Int32 offset, Int32 size) +19 System.Net.Connection.SyncRead(HttpWebRequest request, Boolean userRetrievedStream, Boolean probeRead) +251 [WebException: 基础连接已经关闭: 接收时发生错误。] System.Net.HttpWebRequest.GetResponse() +6557544 System.ServiceModel.Channels.HttpChannelRequest.WaitForReply(TimeSpan timeout) +55 [CommunicationException: 接收对 http://10.10.101.242:8095/ClientService.svc 的 HTTP 响应时发生错误。

这可能是由于服务终结点绑定未使用 HTTP 协议造成的。

这还可能是由于服务器中止了 HTTP 请求上下文(可能由于服务关闭)所致。有关详细信息,请参见服务器日志。] System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) +10990855 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) +336 CCtrmPro.ClientManageService.IClientManagementService.GetClientList(String str) +0 CCtrmPro.ClientManageService.ClientManagementServiceClient.GetClientList(String str) in g:\Service References\ClientService\Reference.cs:155 CCtrmPro.ClientManagement.ClientInformation.InitClientList() in g:\Client\ClientInformation.aspx.cs:37 CCtrmPro.ClientManagement.ClientInformation.Page_Load(Object sender, EventArgs e) in g:\CCtrmPro\Client\ClientInformation.aspx.cs:19 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +51 System.Web.UI.Control.OnLoad(EventArgs e) +92 System.Web.UI.Control.LoadRecursive() +54 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772+

解决方案:

1.  WCF中接口方法传递的DataTable替换成Dataset

2.认为WCF来传递DataTable的Bug没有设置tableName造成

3.认为传输数据量大,造成服务器端的服务关闭,解决方案详情

可根据路径查看服务器的日志记录:C:\Windows\System32\LogFiles\HTTPERR

部分日志如下,可根据自己访问的端口查看。

#Software: Microsoft HTTP API 2.0 #Version: 1.0 #Date: 2017-02-10 00:50:54 #Fields: date time c-ip c-port s-ip s-port cs-version cs-method cs-uri sc-status s-siteid s-reason s-queuename 2017-02-10 00:50:54 10.10.101.242 1700 10.10.101.242 80 - - - - - Timer_ConnectionIdle - 2017-02-10 00:51:09 10.10.101.242 59305 10.10.101.242 8099 - - - - - Timer_ConnectionIdle - 2017-02-10 00:51:09 10.10.101.242 58311 10.10.101.242 8099 - - - - - Timer_ConnectionIdle - 2017-02-10 00:51:09 10.10.101.242 59306 10.10.101.242 8099 - - - - - Timer_ConnectionIdle - 2017-02-10 00:51:29 10.10.101.242 58313 10.10.101.242 8085 - - - - - Timer_ConnectionIdle - 2017-02-10 01:28:12 10.10.101.242 60406 10.10.101.242 8095 HTTP/1.1 POST /ClientService.svc - 4 Request_Cancelled ASP.NET+v4.0 2017-02-10 01:30:24 ::1%0 60402 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:30:29 10.10.101.242 60408 10.10.101.242 8095 - - - - - Timer_ConnectionIdle - 2017-02-10 01:34:11 10.10.101.242 60505 10.10.101.242 8095 HTTP/1.1 POST /ClientService.svc - 4 Request_Cancelled ASP.NET+v4.0 2017-02-10 01:35:19 10.10.101.242 60491 10.10.101.242 8085 - - - - - Timer_ConnectionIdle - 2017-02-10 01:35:59 10.10.101.242 60494 10.10.101.242 8095 - - - - - Timer_ConnectionIdle - 2017-02-10 01:36:24 ::1%0 60501 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:41:19 10.10.101.242 60524 10.10.101.242 8095 - - - - - Timer_ConnectionIdle - 2017-02-10 01:41:54 ::1%0 60530 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:45:04 ::1%0 60560 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:45:04 ::1%0 60562 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:45:04 ::1%0 60553 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:46:04 ::1%0 60567 ::1%0 58348 - - - - - Timer_ConnectionIdle - 2017-02-10 01:46:04 ::1%0 60563 ::1%0 27076 - - - - - Timer_ConnectionIdle - 2017-02-10 01:51:04 ::1%0 60706 ::1%0 58348 - - - - - Timer_ConnectionIdle -

...........................................

经过验证,解决方案 :

1.经过本人亲自验证,确实有效。

2.给DataTable添加了tableName还是无效,问题依然解决不了。

3.服务器日志反应访问端口失败,但是本人看不出是哪里的问题,大家自行查看。

前提是服务部署正确,客户端调用的代码逻辑也不要出错,这样有利于缩小范围。

另外msdn中文论坛WCF板块有相关提问,已经解决,点击可查看

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gongjing457/article/details/54962832

智能推荐

QT 进程间通信——剪切板_Sakuya__的博客-程序员秘密

简述剪贴板(Clipboard)是由操作系统维护的一块内存区域,这块内存区域不属于任何单独的进程,但是每一个进程又都可以访问这块内存区域,而实质上当在一个进程中复制数据时,就是将数据放到该内存区域中,而当在另一个进程中粘贴数据时,则是从该块内存区域中取出数据。从剪切板的定义中我们可以看出,剪切板和共享内存差不多,都是在系统中使用一块公共的内存,只是共享内存的公共内存是我们自己申请创建的,剪...

VeeamBackup&Replication_9.5.0.1922无法备份esxi6.7虚拟机_DenisQJiang的博客-程序员秘密

VeeamBackup&Replication_9.5.0.1922无法备份esxi6.7虚拟机欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功...

How to Bypass DEP+ASLR+SEHOP_sam20151111sam的博客-程序员秘密

昨天去SSCON2009听TK讲了一个议题"安全漏洞的下一个十年",佩服TK的演讲的幽默风趣,MS一个非常具有忽悠的议题讲的很生动,精彩,再次膜拜下,我个人觉得里面最精彩部分就在如下了,呵呵,通过MS08-078这个去年的IE7的漏洞来介绍如何绕过windows现有的安全保护机制,很是受启发,因为TK只有一张PPT的介绍,我在此想展开介绍的更详细点,和大家分享一下TK的研究

STM32F103相关ADC笔记_stm3210x的定义_小胡同学的学习笔记的博客-程序员秘密

一、更新时间2022.2.19二、具体内容1.ADC的概念 将模拟量转换为数字量。2.STM3210X系列ADC特点1.为12位逐次逼近型的模拟数字转换器;2.支持单次和连续转换模式;3.通道自动切换扫描;4.采样间隔可以按通道编程;5.转换结果支持左对齐或右对齐存储在16位数据寄存器;6.ADC转换最大速率为1us7.输入范围通常为...

tomcat配置前台访问日志记录_tomcat 日志配置_^止境^的博客-程序员秘密

tomcat的日志分为两部分一是运行的日志,它主要记录运行的一些信息,尤其是一些异常错误日志信息二是访问日志信息,他是记录的访问的时间,ip,url,sessionId等信息。1.tomcat产生的访问日志【localhost_access_log.Y-M-D.txt】它记录的访问的时间,IP,访问的资料等相关信息2.首先是配置tomcat访问日志数据,配置的方式如下打开${catalina}/conf/server.xml文件 ---注:${catalina}是tomcat...

Android Relativelayout布局属性_ARy的博客-程序员秘密

下面介绍一下RelativeLayout用到的一些重要的属性:    第一类:属性值为true或false    android:layout_centerHrizontal                                           水平居中    android:layout_centerVertical                         

随便推点

基于 mini2440 电阻式触摸屏:电阻式触摸屏工作原理_电阻式触摸屏坐标原理 代码_gjy938815的博客-程序员秘密

==========================================================开发环境编译系统 :fedora9编译器:arm-linux-4.4.3主控芯片:S3C2440开发板:mini2440==================================================

ubuntu上配置环境lnmp,系统搭建,配置过程,phpstorm的安装_lnmp可以配置phpstorm嘛_qq_34242581的博客-程序员秘密

1.安装ubuntu-----按照提示,比较简单,设置用户名 密码,开机是否启动密码;按了不少次F122.安装git:  目前用的 ubuntu 12.04 LTS, 采用163的源安装Git以后git的版本             是1.7.9.1,和目前最新的版本相差太多。如何安装最新版本的git呢? (1.9.3)PPA源安装,支持 Ubunt

15个必知的Mysql索引失效场景,别再踩坑了_union走索引吗_十一技术斩的博客-程序员秘密

背景无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑。常见的现象就是:明明在字段上添加了索引,但却并未生效。前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参数下生效,在某些参数下不生效,这是为什么呢?另外,无论是面试或是日常,Mysql索引失效的通常情况都应该了解和学习。为了方便学习和记忆,这篇文件将常见的15种不走索引情况进行汇总,并以实例展示,帮助大家更好地避免踩坑。建议收藏,以备不时之需。数据库及索引准备创建表结构为了逐项验证索引的使用情...

ARM CortexA9寄存器组织_嵌入式cortex-a9寄存器_⁡⁢⁡布莱克先生的博客-程序员秘密

一、简介(1)ARM Cortex系列处理器有40个32位的寄存器,其中包括33个通用寄存器和7个状态寄存器,40个中有18个可编程访问的寄存器(2)寄存器被安排成部分重叠的组,在不同的工作模式和处理器状态下,程序员可以访问的寄存器也不同(3)分组的寄存器在处理处理器异常和特权操作时可得到快速的上下文切换二、8种处理器工作模式下实际访问的寄存器( User用户模式 )( Syste...

端到端安全的视频会议密钥分发解决方案(附实验报告以及python源代码)_密钥分发流程_lunan0320的博客-程序员秘密

本团队针对视频应用环境,设计了一套高效的视频会议密钥分发方案。文章目录本团队针对视频应用环境,设计了一套高效的视频会议密钥分发方案。核心流程:功能目标:安全目标的实现:潜在性问题解决方案:以下是我们小组的一个实验报告的部分截图供大家参考核心流程: 会议创建:首先会有一个会议创始人即会议主持人,在会议创建时候,创始人会自定义会议的密码,以及输入参会人员的用户名,这些用户名也就是将要加入会议人员的名单。 数据库初始化:服务器会在它的数据库中存储这些用户名,存储时是采用加密存储的模式,数据库中的数据都

1061. 判断题(15)--PAT乙级真题java实现_勤奋的凯尔森同学的博客-程序员秘密

个人博客:小景哥哥1061. 判断题(15)–PAT乙级真题java实现判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。 输入格式: 输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量。第二行给出M个不超过5的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0代表“非”,1代表“是”。随后N行,每行给出一个学生的...

推荐文章

热门文章

相关标签