所以,我正在尝试使用soap与Web服务进行通信并获取错误。令人沮丧的是,这个特殊问题是它与我的本地Web服务副本完全正常(是的,我试过关闭我的防火墙)并且曾经使用过以前版本的webservice和客户端。我怀疑我可以(虽然我必须查找如何执行此操作)向客户端发送的内容添加操作参数。但是,我很好奇为什么它能够在没有它的情况下工作。
编辑说明:我认为相关代码在停止工作和工作时之间是相同的(因为我检查了旧版本的程序并且已经相同的问题和相关的代码是相同的...除非我错过了一些微妙的东西)。我知道本地副本和远程副本上的实际服务器程序是相同的,即使它只在本地工作。因此我怀疑有一些奇怪的配置设置我可以改变以使其工作。
错误消息:“soap:ClientUnable处理没有有效操作参数的请求。请提供有效的soap操作。”
VB客户端代码
'WEB_SERVICE_URL_CONST = http://site.com/foo.asmx
'domDoc.xml = <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><TestConnection xmlns="http://site.com"/></soap:Body></soap:Envelope>
Dim oXml As New XMLHTTPRequest
oXml.Open "POST", WEB_SERVICE_URL_CONST, False, "\"
oXml.setRequestHeader "Content-Type", "text/xml"
oXml.send domDoc.xml
C#服务器代码
[WebMethod]
public int TestConnection()
{
return 1;
}
答案 0 :(得分:0)
您确定前两行未在真实版本中注释掉吗?示例代码似乎没有WEB_SERVICE_URL_CONST和domDoc.xml的值,而且一个空的Soap请求确实没有指定任何操作?
编辑:我发现“以前版本的Web服务和客户端曾经工作得很好”有点令人困惑。如果你真的改变了客户端和服务器,那么哪个部分没有改变?答案 1 :(得分:0)
问题在于xmlns="http://site.com"
代码。当我在本地测试时,我错误地使用了xmlns="http://localhost"
。事实上,这不应该在客户端或服务器上(在服务器中,这将是WebService(Namespace =...)
)更改,无论我在哪里测试...但如果它确实发生了变化,客户端和服务器需要匹配。