質問

私はASP.NET webserviceとの:

[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
    }
}

私は呼び出しにwebサービスからのASPを使う:

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>

私ャパケットの線が見える、XMLら送信されるSOAPツールキットとは少し違った意味が送られます。純WSます。のソープツールキットを送る:

<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>

します。ネクを送る:

<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>

で初めてのASP/石鹸ツールキット呼び出します。NET、webサービスどうかよろしくお願いします全ての匠な技/ソープ-fuを使って引きるもののようです。

そのアイデア?OneソリューションはノックアップCOMの呼び出し可能オブジェクトです。ネプロキシとしており、XML文字列としてparam通話のWS、自分に代わって、キャリーの複雑な仕事をこないます。

役に立ちましたか?

解決 3

私は、この:

プのお客様 要求 ノードの持ち直してデフォルトの名前空間から:

<ProcessMessage xmlns="http://internalservice.net/messageprocessing">

追加空のデフォルト名前空間のXMLら送信されるASPトオーバーライドする行動:

xmlMessage = "<request xmlns=''><task>....various xml</task></request>"

他のヒント

Kev,

この溶液になるようにします。

を作成する必要がありますカスタム実装のIHeaderHandlerを創造する適切なツールを提供します。

そのあと一歩一歩はこちら

http://msdn.microsoft.com/en-us/library/ms980699.aspx

編集:いつもご覧いただきましてます。素敵対処するためには、ブックマークこのリンクを問わず:D

ろしければ翻訳をお願いしますへのアクセスサービスコードするだけでなく、消費するお客様。

プの名前空間のXmlDocumentとしての最初の部分の研究"に関するお問合せ

のようなもの:

XmlDocument changeDocumentNamespace(XmlDocument doc, string newNamespace) 
{   
    if (doc.DocumentElement.NamespaceURI.Length > 0) 
    {
        doc.DocumentElement.SetAttribute("xmlns", newNameSpace);
        XmlDocument newDoc = new XmlDocument();
        newDoc.LoadXml(doc.OuterXml);
        return newDoc;
    }
    else 
    {
        return doc;
    }
}

その後:

[WebService(Namespace = "http://internalservice.net/messageprocessing")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ToolboxItem(false)]
public class ProvisioningService : WebService
{
    [WebMethod]
    public XmlDocument ProcessMessage(XmlDocument message)
    {
        message = changeDocumentNamespace(message,String.Empty);
        // Do Stuff...
    }
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top