2011-02-05 3 views
2

私のアプリケーションをazureにwcfロールで接続しようとしています。一度に複数のwcfメソッドを呼び出すまで、すべてうまく動作します。私はスレッドだと思う。例外は:一度に2つの非同期呼び出しを行った後のWCFの問題

メッセージを受け入れることができるhttp://localhost:57579/Service1.svcにリッスンしているエンドポイントがありませんでした。これは、しばしば不正なアドレスまたはSOAPアクションによって引き起こされます。詳細については、InnerException(存在する場合)を参照してください。

私は、WCFサービスにスレッドを追加する方法を探していたと私はこれが見つかりました:私はこの特性を組み合わせることを試みたが、それは仕事をdoesnt

[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のリターンでこのリンクを想定していますが、ボディには詳細はありますか? –

+0

クライアントとサーバーは同じスレッドで実行していますか? – RQDQ

答えて

1

私はこの問題は、あなたが同時に2つの操作を行うために同じクライアントを使用していることだと思います。 2人のクライアントをスピンアップさせ、それぞれのクライアントに操作を依頼しましたか?

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

} 

ノートイベントハンドラを脱退/サブスクライブと同じくらいの痛みを必要としません非同期呼び出しを行うために他の方法があります。

関連する問題