一次两次异步调用后WCF问题

时间:2011-02-05 12:09:49

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

我正在尝试使用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);
    }
} 

1 个答案:

答案 0 :(得分: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);

}

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