【问题标题】:WCF problem after two async calls at once一次两次异步调用后的WCF问题
【发布时间】:2011-02-05 12:09:49
【问题描述】:

我正在尝试使用 wcf 角色将我的应用程序连接到 azure。一切正常,直到我一次调用多个 wcf 方法。我认为这是因为线程。例外是:

http://localhost:57579/Service1.svc 上没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关详细信息,请参阅 InnerException(如果存在)。

我正在搜索如何向 wcf 服务添加线程,我发现了这个:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall]

我试图结合这些属性,但它不起作用:(

这是我的简单代码: 客户:

public MainPage()
{
     InitializeComponent();
     service = new Service1Client();
     service.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(getDataCompleted); 

     service.GetDataAsync(1);
     service.GetDataAsync(2);
}

void getDataCompleted(object sender, GetDataCompletedEventArgs e)
{
    if (e.Error != null)
    {

    }
    else
    {
        this.textBlock1.Text = e.Result;
    }
}

服务器:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, ConcurrencyMode = ConcurrencyMode.Multiple)]
public class Service1 : IService1
{
    public string GetData(int value)
    {
        return string.Format("You entered: {0}", value);
    }
} 

【问题讨论】:

  • 您是否从任一侧收到了 InnerException?我假设这个链接返回 HTTP 500,正文是否有更多详细信息?
  • 您的客户端和服务器是否在同一个线程中执行?

标签: c# wcf windows-phone-7 azure


【解决方案1】:

我认为问题在于您使用同一个客户端同时执行两项操作。您是否尝试过启动两个客户端并要求每个客户端执行操作?

public MainPage()
{
    InitializeComponent();

    service1 = new Service1Client();
    service1.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(getDataCompleted); 

    service1.GetDataAsync(1);

    service2 = new Service1Client();
    service2.GetDataCompleted += new EventHandler<GetDataCompletedEventArgs>(getDataCompleted); 

    service2.GetDataAsync(2);

}

请注意,还有其他方法可以执行异步调用,而订阅/取消订阅事件处理程序不需要那么痛苦。

【讨论】:

    猜你喜欢
    • 2011-01-22
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2023-04-07
    • 2018-09-06
    • 2017-06-01
    • 1970-01-01
    相关资源
    最近更新 更多