2011-02-05 50 views
2

我想通過wcf角色將我的應用程序連接到azure。一切正常,直到我一次調用多個wcf方法。我認爲這是因爲線程。例外情況是:一次兩個異步調用後的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); 
    } 
} 
+0

你從任何一方得到了一個InnerException嗎?我認爲這與HTTP 500返回鏈接,身體是否有更多的細節? – 2011-02-06 17:13:58

回答

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); 

} 

注意有其他的方式來做到這一點不需要與訂閱/退訂的事件處理儘可能多的痛苦異步調用。