【问题标题】:Calling a asmx Web Service from a WCF Service从 WCF 服务调用 asmx Web 服务
【发布时间】:2011-03-07 05:51:38
【问题描述】:

我有一个有趣的问题,需要从 wcf 服务获取一些数据的应用程序 (silverlight)。在这方面都很好,而且很容易做到。

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

如果可能的话,请有人指出如何处理这个问题的正确方向。

感谢您的宝贵时间

【问题讨论】:

  • 请问为什么在最初的 WCF 调用中没有提供此信息(您需要进一步查询的详细信息)?
  • 不能同步调用asmx服务吗?
  • 我不明白你到底想做什么?问题是需要时间吗?如果问题是超时?增加绑定超时属性的次数。如果问题是时间?与 vc 74 评论一起去
  • 对不起,伙计们,我对这些东西还很陌生。是的,只是同步调用了它。第一个项目我大量使用了 Web 服务,因此一直以异步方式调用,起初我没有想到只是同步调用很好,因为客户端是无论如何都需要等待的,所以不需要它.一切顺利,一切正常。

标签: .net silverlight wcf asmx


【解决方案1】:

如果您由于某种牵强的原因无法同步调用 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 循环。

【讨论】:

  • 谢谢文森特,最后我只是用同步调用了。
猜你喜欢
  • 1970-01-01
  • 2013-03-27
  • 1970-01-01
  • 2012-05-29
  • 1970-01-01
  • 2011-02-19
  • 1970-01-01
  • 2014-02-12
  • 1970-01-01
相关资源
最近更新 更多