2011-03-07 360 views
2

我需要从wcf服务获取一些数据的应用程序(silverlight)有一个有趣的问题。在这方面没有任何意义,容易做到。从WCF服务调用asmx Web服务

wcf服务需要调用另一个asmx Web服务来获取更多位数据来完成检索。很明显,这会导致正常异步事件中的问题,因为一旦运行wcf方法,就需要对asmx服务创建另一个异步调用来检索数据。

如果这是可能的,有人可以指示我如何处理这个问题的正确方向。

感谢您的时间

+0

请问为什么在初始的WCF调用中没有提供这个功能(需要进一步查询的细节)? – 2011-03-07 05:54:37

+1

你不能同步调用asmx服务吗? – 2011-03-07 07:28:31

+0

我不明白你究竟想要做什么?问题需要时间?如果问题超时?增加绑定超时属性的时间。如果问题是时间?去vc 74评论 – BreakHead 2011-03-07 07:37:22

回答

2

在你,对于一些牵强的理由,不能同步调用ASMX服务(这是迄今为止更好的解决方案)的情况下,你可以尝试这样的事情(伪代码虽然):

public MyResultClass GetStuff(ParamClass myParameter) 
{ 
    var proxy = new ASMXProxy(); 
    proxy.Url = Settings.Default.ASMXUrl; 
    var synchhandle = proxy.BeginGetStuff(myParamater); 
    while(synchhandle.IsCompleted == false) 
    { 
     //Do stuff here 
    } 
    return proxy.EndGetStuff(synchhandle); //Code will block here until done 
} 

如果您在进行调用时不需要做其他事情,则可以省略while循环。

+0

谢谢文森特,我刚刚在最后同步调用它。 – Mark 2011-03-09 07:10:42