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

我有两个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)
        {

        }
    }
}

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

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

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

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

也可能是因为您正在查看本地文件的时间戳,因为在程序结束时最终确定了时间戳,所以时间/顺序未定义。

我不熟悉XmlHandler,但无论XmlHandler在内部做什么,都要确保关闭,刷新和/或配置StreamWriters。

链接地址: http://www.djcxy.com/p/60431.html

上一篇: Call web service methods in specific order

下一篇: How to intercept with WCF Web Method Requests?