按特定顺序调用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