德尔福<-&燃气轮机;缺少参数值的c#Webservice SOAP请求

德尔福<-&燃气轮机;缺少参数值的c#Webservice SOAP请求,c#,web-services,soap,delphi-7,C#,Web Services,Soap,Delphi 7,我需要在Delphi7中的客户端和.NETWebService(ASMX)之间实现SOAP通信。我知道,非常古老的项目/技术 我已经编写了webservice,但是通过WSDL导入器(基于THTTPRIO)自动创建的类无法正常工作,我无法将参数值传递到webservice。换句话说,会调用webservice中的方法,但其所有参数都有默认值。我可以自己解析xml请求,但在WebMethod中无法访问原始xml。我希望,我只是缺少了一些方法属性。有什么想法吗 我使用网络嗅探器确保将参数发送到服务,

我需要在Delphi7中的客户端和.NETWebService(ASMX)之间实现SOAP通信。我知道,非常古老的项目/技术

我已经编写了webservice,但是通过WSDL导入器(基于THTTPRIO)自动创建的类无法正常工作,我无法将参数值传递到webservice。换句话说,会调用webservice中的方法,但其所有参数都有默认值。我可以自己解析xml请求,但在WebMethod中无法访问原始xml。我希望,我只是缺少了一些方法属性。有什么想法吗

我使用网络嗅探器确保将参数发送到服务,如下所示:

POST /Lib/ASPX/WSService.asmx HTTP/1.1
SOAPAction: "WS/GetMessages"
Content-Type: text/xml
User-Agent: Borland SOAP 1.2
Host: localhost:54561
Content-Length: 480
Connection: Keep-Alive
Cache-Control: no-cache

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<NS1:GetMessages xmlns:NS1="WS">
<id xsi:type="xsd:int">12345</id>
</NS1:GetMessages>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
POST/Lib/ASPX/WSService.asmx HTTP/1.1
SOAPAction:“WS/GetMessages”
内容类型:text/xml
用户代理:Borland SOAP 1.2
主机:本地主机:54561
内容长度:480
连接:保持活力
缓存控制:没有缓存
12345
以及webservice中方法的标头,该方法使用参数id=0进行调用

[WebMethod]
public List<HelpDeskView> GetMessages(int id) 
[WebMethod]
公共列表GetMessages(int id)

我找到了解决办法。在自动生成单元的末尾,在
初始化
部分,缺少这一行:

InvRegistry.RegisterInvokeOptions(TypeInfo(Service1Soap), ioDocument);

的确这个评论也帮助我解决了类似的问题。这绝对是Delphi中的一个bug(我使用的是Delphi7)