按特定顺序调用Web服务方法

时间:2014-06-05 07:55:53

标签: c# .net web-services

我有两个Web服务调用,Method1()和Method2()。

如果布尔变量设置为true,则应首先调用Method1(),然后调用Method2()。 如果布尔变量设置为false,则只应调用Method2()。

当我查看xml文件的时间戳时,我可以看到Method1()的请求/响应比Method2()的文件具有更新的时间戳,这表明在Method1之前调用了Method2。

有没有办法在调用Method2()之前等待Method1()完成?

    var client = new WebServiceClient();

    bool myBoolean = true;

    if (myBoolean)
    { 
        XmlHandler.ToXML(method1Request, "C:/Temp/method1RQ.xml");
        var method1Response = client.Method1(method1Request);
        XmlHandler.ToXML(method1Response, "C:/Temp/method1RS.xml");
    }

    XmlHandler.ToXML(method2Request, "C:/Temp/method2RQ.xml");
    var method2Response = client.Method2(method2Request);
    XmlHandler.ToXML(method2Response, "C:/Temp/method2RS.xml");

    client.Close();

XmlHandler中的代码:

public static void ToXML(object obj, string savePath)
{
    if (obj != null)
    {
        try
        {
            if (File.Exists(savePath))
            {
                File.Delete(savePath);
            }
            XmlSerializer serializer = new XmlSerializer(obj.GetType());
            using (XmlTextWriter xmlWriter = new XmlTextWriter(savePath, System.Text.Encoding.UTF8))
            {
                serializer.Serialize(xmlWriter, obj);
                xmlWriter.Close();
            }
        }
        catch (Exception exc)
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

  
    

有没有办法在调用Method2()之前等待Method1()完成?

  

这是您正在使用的同步调用的默认行为。

我最好的猜测是你同时解雇了两个服务客户端。

查看服务器日志以查看呼叫何时进入。

也可能是您正在查看由于程序结束时最终确定而刷新的本地文件的时间戳,因此时序/顺序未定义。

我不熟悉XmlHandler,但无论XmlHandler在内部做什么,请确保关闭,刷新和/或处理StreamWriters。