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

本文关键字:服务 方法 web 顺序调用 | 更新日期: 2023-09-27 18:06:44

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

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

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

在调用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)
        {
        }
    }
}

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

在调用Method2()之前是否有方法等待Method1()完成?

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

我的最佳猜测是您同时启动了两个服务客户端。

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

也可能是您正在查看本地文件上的时间戳,这些时间戳在程序结束时作为结束的结果而刷新,因此时间/顺序未定义。

我不熟悉XmlHandler,但无论XmlHandler在内部做什么,确保关闭,冲洗和/或处置StreamWriters。