仕事の一部として利用する必要がある ASMX Web サービスがあります。ASPX ページ経由でこのサービスを呼び出して、サード パーティ システムで新しいエンティティを作成しています。そのサービスの基盤となるコードにはアクセスできません。単に別のシステムと通信できるようにするためです。
サービスを正しく呼び出しているかどうかを判断するのに苦労しています。誰かアドバイスをいただけないでしょうか。
ASMX ページをインストールしました。これにより、BeginProcessOperations メソッドと呼ばれるクラス「ConfirmConnector」が提供されました。それが戻ってくるのを待ってから、結果を解析したいと思います。結果は XML である必要があり、それをステップスルーして目的のデータを取得します。
問題は、このプロセスが時々死んでしまうことです。つまり、「EndProcessOperations」メソッドを呼び出しても何も起こりません。エラーは発生しません。コードが終了し、メソッドが返されます。
私の呼び出しコードは次のとおりです。
private void sendConfirmRequest(XmlManipulator requestXML)
{
file.WriteLine("Sending CONFIRM Request!");
AsyncCallback callBack = new AsyncCallback(processConfirmXML); // assign the callback method for this call
IAsyncResult r = conn.BeginProcessOperations(requestXML, callBack, AsyncState);
System.Threading.WaitHandle[] waitHandle = { r.AsyncWaitHandle }; // set up a wait handle so that the process doesnt automatically return to the ASPX page
System.Threading.WaitHandle.WaitAll(waitHandle, -1);
}
私のハンドラーコードは次のとおりです。
/*
* Process the response XML from the CONFIRM Connector
*/
private static void processConfirmXML(IAsyncResult result)
{
try
{
file.WriteLine("Received Response from CONFIRM!");
if(result == null)
{
file.WriteLine("RESPONSE is null!!");
}
if(conn == null)
{
file.WriteLine("conn is null!!");
}
file.WriteLine("Is Completed : " + result.IsCompleted);
XmlNode root = conn.EndProcessOperations(result);
file.WriteLine("got return XML");
//writeXMLToFile("C:/response.xml",root.InnerXml);
file.WriteLine(root.InnerXml);
このコードを正しい方法で処理しているかどうか誰でもアドバイスできますか?また、ハンドラーのこの行の後に私のコードがランダムに爆撃する理由を誰か知っていますか?
XmlNode root = conn.EndProcessOperations(result);
助けてくれてありがとう、ポール