内部异常SocketException:由于目标计算机积极拒绝,无法连接。127.0.0.1:44386
记录一次血的教训QAQ本文只有解决思路没有具体方法(因为错误不一定是因为这个)。
上周在做.NETWebService的时候遇到了个问题,这是在用本地提供WebService服务以后出现的错误。
在另一个函数中我写好了myfindbystr方法,里边基本没啥大问题。
记录坎坷的过程:当时是老师在上面讲课给我们敲的代码,问题就出在myfindbystr这个方法里,因为webservice服务的原理是我们在里边写好方法以后,在工程中添加好服务引用后,即可new一个服务对象出来使用这个服务里的方法,第一步我先检查了返回类型是否正确,起初没有多思考只把编译器改得不报错即可,但是一次次都无法运行,百度也搜不到,VS的问题实在太冷门了。同样是这个错误,然后这个工程使用的是单文件数据库,会不会是读取被锁定的问题,重新弄个新的数据库也无法解决,于是咨询跟我出现同样问题的同学,他把string[]改成了String,返回类型都对应上就运行成功了,结果我试了不行QAQ当时偶就吐了没办法暂时不理了。过了几天也就是今天,这代码不修好没法继续搞啊QAQ考试又怕考到这个总不能一直卡着,今天可能比较有灵感,盯着错误信息来思考可能出现的错误就找到了原因(这也是偶的重要收获)。
出现错误以后,我发现报错信息上虽然写着的错误是无法连接服务器,我就把错误定位到数据库和这个webservice上,其实这么想是好的,至少对错误有某些初步认识,但是错误的具体信息我当时没有看,他是在我的myfindbystr这个函数里面的第一行,错误信息里的函数竟然跟我写的函数不一致,我立马调出他的源码看是否是我现在这个函数。。很显然原因是被这个框架的某个协议改变了它的返回类型,传入的参数其实是string,而返回的参数也只能是string,在WebService1函数中我却定义成了String,显然不合理,于是我把返回类型都改成了string就运行成功了。
教训:出现错误的时候或许第一时间能拥有自己常规对错误的定位,但错误具体位置更需要结合具体错误信息分析。因此以后偶一定会多多关注错误信息,一些日志文件,其实它写得很清楚错误出现在哪里,为什么会从这里报错而不是其他地方等等,我也意识到不是每一条BUG都能在搜索引擎中找到的。