を使用してASPからASP.NET Webサービスを呼び出す:私はの線に沿ってとASP.NETのWebサービスを持っているSOAPClient
[WebService(Namespace = "http://internalservice.net/messageprocessing")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ProvisioningService : WebService
{
[WebMethod]
public XmlDocument ProcessMessage(XmlDocument message)
{
// ... do stuff
}
}
私のようなものを使用してASPからWebサービスを呼び出しています:
provWSDL = "http://servername:12011/MessageProcessor.asmx?wsdl"
Set service = CreateObject("MSSOAP.SoapClient30")
service.ClientProperty("ServerHTTPRequest") = True
Call service.MSSoapInit(provWSDL)
xmlMessage = "<request><task>....various xml</task></request>"
result = service.ProcessMessage(xmlMessage)
私が遭遇している問題は、XMLがProcessMessageメソッドに到達すると、Webサービス配管がデフォルトの名前空間を追加したことです。私はProcessMessage(XmlDocumentのメッセージ)内のブレークポイントを設定した場合、つまり、私は以下を参照してください。私は、ワイヤ上のパケットをキャプチャする場合
<request xmlns="http://internalservice.net/messageprocessing">
<task>....various xml</task>
</request>
私はSOAPツールキットによって送信されたXMLは、.NETによって送られたものとは若干異なっていることがわかりますWSクライアント。 SOAPツールキットには、送信します。
<SOAP-ENV:Envelope
xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"
xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<ProcessMessage xmlns="http://internalservice.net/messageprocessing">
<message xmlns:SOAPSDK4="http://internalservice.net/messageprocessing">
<request>
<task>...stuff to do</task>
</request>
</message>
</ProcessMessage>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
.NETクライアントが送信なくなり:
<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>
<ProcessMessage xmlns="http://internalservice.net/messageprocessing">
<message>
<request xmlns="">
<task>...stuff to do</task>
</request>
</message>
</ProcessMessage>
</soap:Body>
</soap:Envelope>
それはあまりにも長い間、私は、.NET Webサービスを呼び出すためにASP/SOAPツールキットを使用するので、私は覚えていないことをされていますすべての賢いトリック/ SOAP-fu私はこのようなものを回避するために引っ張っていました。
アイデア? 1つの解決策は、XMLを文字列パラメータとして受け取り、私のためにWSを呼び出すCOM呼び出し可能な.NETプロキシをノックすることですが、これは余計な複雑さ/作業の余計なものです。
YEP ... bookmarked ... :) +1 – Kev