WebService,SOAP协议路由选择
近日做项目的时候遇到一个问题,是关于调用WebService,SOAP消息如何路由到web服务器的问题。客户端采用SOAP1.1协议,服务器能够收到客户端的请求,但是参数为null,后来分析Http请求头Header和Body找到了问题,Header中的SOAPAction指向地址为”http://xxx.xxx.com/Submit“,而Body下面的第一个元素为Submit_1。
解决这个问题的办法有两种:
方法一,修改客户端代码,将SOAPAction的指向地址改为”http://xxx.xxx.com/Submit_1“,或者将Body下面第一个元素改为Submit,只要保持SOAPAction指向方法与Body下面的第一个元素一致即可。
方法二,修改服务端代码,也就是WebService,在WebService类申明的前面加上[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement)],这句代码的作用是SOAP消息基于Body下面的第一个元素路由,而不是默认基于SOAPAction路由。