2011-11-08 6 views
0

を付属していません、私はシルバー経由のSharePoint 2010から現在のユーザー名を取得するために使用しているコードです:SharePointのclientContext.ExecuteQueryAsyncは、()ここに戻っ

ClientContext clientContext = ClientContext.Current; 
if (clientContext == null) 
{ 
    SharepointUser = "[Unknown]"; 
} 
else 
{ 
    MessageBox.Show("Beginning server query now..."); 
    clientContext.Load(clientContext.Web, s => s.CurrentUser); 
    clientContext.ExecuteQueryAsync((s, e) => 
    { 
     MessageBox.Show("RESPONSE!"); 
     SharepointUser = clientContext.Web.CurrentUser.LoginName; 
     MessageBox.Show("Hello, " + SharepointUser + "!"); 
    }, 
    (s, e) => 
    { 
     MessageBox.Show("An error occurred: " + e.ToString()); 
    }); 
} 

問題は要求が戻ってくることはありませんということです!成功/エラーイベントはまったくトリガーされず、リクエストは空になるように見えます。

誰にもアイデアはありますか?

+0

サーバーとのHTTP会話を観察するには、Fiddlerを使用します。 http://www.fiddler2.com/ – AnthonyWJones

+0

私のコンピュータからFiddlerでリクエストされていると表示されません。 Silverlightアプリケーションがサーバー上でホストされていて、SharePointサーバーから情報を要求しようとすると、トラフィックはローカルコンピュータを通過するのはなぜですか? – qJake

+0

コードはクライアント側のコードであり、サーバー側のコードではありません。 – AnthonyWJones

答えて

1

MessageBox.Showが原因である可能性があります。私は同じ問題を抱えていて、デバッグによって、ExecuteQueryAsyncコールバック内のMessageBox.Showの呼び出しが「無効なクロススレッドアクセス」という例外をスローしていることがわかりました。

Deployment.Current.Dispatcher.BeginInvoke(() => MessageBox.Show("Request Suceeded")); 
+0

ありがとうございます - 私は同じ問題を抱えていました。 –

0

これを試してください: -

ClientContext clientContext = ClientContext.Current; 
if (clientContext == null) 
{ 
    SharepointUser = "[Unknown]"; 
} 
else 
{ 
      try 
      { 
    MessageBox.Show("Beginning server query now..."); 
    clientContext.Load(clientContext.Web, s => s.CurrentUser); 
    clientContext.ExecuteQueryAsync((s, e) => 
    { 
     MessageBox.Show("RESPONSE!"); 
     SharepointUser = clientContext.Web.CurrentUser.LoginName; 
     MessageBox.Show("Hello, " + SharepointUser + "!"); 
    }, 
    (s, e) => 
    { 
     MessageBox.Show("An error occurred: " + e.ToString()); 
    }); 
      } 
      catch (Exception err) 
      { 
       MessageBox.Show("Synchronous error occurred: " + err.ToString()); 
      } 
} 

を非同期操作を開始しようとする試みは、それがusualy非同期コールバックにそれを残すよりも、同期ではなく、エラーをスローに失敗した場合。

+0

まだ何も動作しませんでした – qJake

+0

"Beginning ..."というメッセージが表示されますか? – AnthonyWJones

+0

はい、さらに11行目 – qJake

関連する問題