按特定顺序调用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)
{
}
}
}
在调用Method2()之前是否有方法等待Method1()完成?
这是您正在使用的同步调用的默认行为。
我的最佳猜测是您同时启动了两个服务客户端。
查看服务器日志,查看呼叫何时进入。
也可能是您正在查看本地文件上的时间戳,这些时间戳在程序结束时作为结束的结果而刷新,因此时间/顺序未定义。
我不熟悉XmlHandler,但无论XmlHandler在内部做什么,确保关闭,冲洗和/或处置StreamWriters。