总体来讲,事情是很复杂的。
接手一个mui框架下的app,去调用布在服务器上的webservice接口,布置给我的任务是新增几个接口,并更新一些接口。(app是在互联网上开发,接口-接口用C#编写-等都是在内网,也布在内网,webapi为asp.net开发,布在外网)
从app到真正的接口,中间要跳三下:app端用ajax-post请求去调用webapi;
webapi去调用一个为webservice的跳板(跳板webservice);
然后,这个跳板webservice再去调用真正写有接口的webservice。
过程就是这样的,我把两个webservice接口布好,webapi也布好。开始调用测试。
调用结果如下:
1.原来的接口我没有动,调用起来毫无影响,正常;
2.修改的接口,返回的response实体我添加了字段,调用正常,新增字段返回正常;
3.新增的接口,调用报错,我在webapi,跳板webservice、webservice都添加了trycatch,去确定问题所在。最后是在webapi位置报错,并且返回:“服务器未能识别HTTP头SOAPAction的值:http://tempuri.org/(webapi接口名)。”
在网上搜索了很多,也试了很多,包括在webservice与跳板webservice的类中添加字段“[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)] “,也是没有效果。
现在所有的的问题都聚焦在webapi上。最令我疑惑的是,但从controller的代码来看,没有丝毫差别,而且使用wsdl获取的websevice类也都是自动生成的,按照道理来讲,应该是不会报错的,真的是怪异。
也尝试过本地调用本地的webapi,再到本地的跳板Webservice,再到webservice,但是本地调用webapi又出现了跨域、405等错误,也无法复现app调用webapi的真实场景。
本地也使用form小程序测试调用跳板webservice,再到正式webservice,这个过程也是没有问题的。所有的接口都可以正常返回值。
我最终猜测可能是webapi的问题,但是知道是哪里的问题了,也是不清楚问题究竟出现在哪里,网上的解决办法大多停留在webservice上,但是经过测试问题并不再webservice上。同时作为毕业才一年的新晋程序员,有太多东西没有接触过,单位也是什么都让我去做,网页、联调、mq,app,前端、后端,杂而不精,知其然不知其所以然。这个app项目又被单位抛给我,也没有单位大佬的帮助,去询问也是”自己看代码“,有些绝望,而且项目又临近验收,都有点想要撂挑子了。当然也是自己想要把自己手下的程序都写得好好的这一强迫症一直在督促着我不放弃。但是这次真的不会了。。。
希望大家能帮我看看,问题可能会是哪些方面,我也好再与大家讨论,修改代码,现在真的是和没头苍蝇一样乱撞,没有方向的感觉很虚无。。。