本文只有解决思路没有具体方法(因为错误不一定是因为这个)。
在做.NETWebService的时候遇到了个问题,这是在用本地提供WebService服务以后出现的错误。
我的解决办法是把连接的服务删了在重连就好了,挺奇怪的。在网上查的方法各式各样,建议多试试。
网上的:(转载自:内部异常SocketException由于目标计算机积极拒绝 - 碎了的冰 - 博客园 (cnblogs.com))
记录坎坷的过程:当时是老师在上面讲课给我们敲的代码,问题就出在myfindbystr这个方法里,因为webservice服务的原理是我们在里边写好方法以后,在工程中添加好服务引用后,即可new一个服务对象出来使用这个服务里的方法,第一步我先检查了返回类型是否正确,起初没有多思考只把编译器改得不报错即可,但是一次次都无法运行,百度也搜不到,VS的问题实在太冷门了。同样是这个错误,然后这个工程使用的是单文件数据库,会不会是读取被锁定的问题,重新弄个新的数据库也无法解决,于是咨询跟我出现同样问题的同学,他把string[]改成了String,返回类型都对应上就运行成功了,结果我试了不行QAQ当时偶就吐了没办法暂时不理了。过了几天也就是今天,这代码不修好没法继续搞啊QAQ考试又怕考到这个总不能一直卡着,今天可能比较有灵感,盯着错误信息来思考可能出现的错误就找到了原因(这也是偶的重要收获)。
出现错误以后,我发现报错信息上虽然写着的错误是无法连接服务器,我就把错误定位到数据库和这个webservice上,其实这么想是好的,至少对错误有某些初步认识,但是错误的具体信息我当时没有看,他是在我的myfindbystr这个函数里面的第一行,错误信息里的函数竟然跟我写的函数不一致,我立马调出他的源码看是否是我现在这个函数。。很显然原因是被这个框架的某个协议改变了它的返回类型,传入的参数其实是string,而返回的参数也只能是string,在WebService1函数中我却定义成了String,显然不合理,于是我把返回类型都改成了string就运行成功了。
确实框架会改变返回类型,我的服务器端函数返回值是List<String>,结果连接到客户端后就变成了string[]。
但是我感觉上面博主说把String改成string。。这两都是一样的东西啊,奇怪。
MSDN中对string的说明:string is an alias for String in the .NET Framework。string是String的别名而已,string是c#中的类,String是Framework的类,C# string 映射为 Framework的 String。如果用string,编译器会把它编译成String,所以如果直接用String就可以让编译器少做一点点工作。
我的程序里面就没改,就可以运行。所以我感觉还是得慢慢试,有的小问题的解决办法在网上是查不到的,还得自己亲自试试。
省流,删了服务引用重连即可。