2017-11-07 14 views
1

私は私が作成していたWeb APIから複数のRESTサービスを呼び出すためにしようとしているとSharePoint RESTサービスの一つは、このインスタンスが持つはHttpClientをRESTサービスでエラーがスローされます

と呼ばれている間、私は以下のエラーを取得していますすでに1つ以上の要求を開始しています。プロパティは、最初のリクエストを送信する前にのみ変更できます。以下は

私は前にこのエラーが発生しましたことがないのHttpClient

try 
{ 
    var credential = new NetworkCredential(userName_SP, password_SP, domain_SP); 
    var myCache = new CredentialCache(); 
    myCache.Add(new Uri(core_URL), "NTLM", credential); 

    var handler = new HttpClientHandler(); 
    handler.AllowAutoRedirect = true; 
    handler.Credentials = myCache; 

    using (var client_sharePoint = new HttpClient(handler)) 
    { 
     var response = client_sharePoint.GetAsync(core_URL).Result; 
     client_sharePoint.BaseAddress = uri; 
     client_sharePoint.DefaultRequestHeaders.Accept.Clear(); 
     client_sharePoint.DefaultRequestHeaders.Accept.Add(
      new MediaTypeWithQualityHeaderValue("application/json")); 

     var responsedata = await response.Content.ReadAsStringAsync(); 
     var returnObj = JsonConvert.DeserializeObject<SharepointDTO.RootObject>(
      responsedata); 

     return returnObj; 
    } 

    ... 

を使用してRESTサービスを呼び出すためのコードです。

var credential = new NetworkCredential(userName_SP, password_SP, domain_SP); 
var myCache = new CredentialCache(); 
myCache.Add(new Uri(core_URL), "NTLM", credential); 

var handler = new HttpClientHandler(); 
handler.AllowAutoRedirect = true; 
handler.Credentials = myCache; 

using (var client_sharePoint = new HttpClient(handler)) 
{ 
    client_sharePoint.BaseAddress = uri; 
    client_sharePoint.DefaultRequestHeaders.Accept.Clear(); 
    client_sharePoint.DefaultRequestHeaders.Accept.Add(
     new MediaTypeWithQualityHeaderValue("application/json")); 
    var response = await client_sharePoint.GetAsync(core_URL); 

    var responsedata = await response.Content.ReadAsStringAsync(); 
    var returnObj = JsonConvert.DeserializeObject<SharepointDTO.RootObject>(
     responsedata); 

    return returnObj; 
} 

ヘッダとBASEADDRESSはあなたがGetAsyncで要求を行う前に設定する必要があります。私はこれを試してみてくださいタイムアウト

+0

これは適用されますか? https://stackoverflow.com/questions/42235677/httpclient-this-instance-has-already-started – claylong

+0

... [HttpClientを正しく使用しています](https://contrivedexample.com/2017/07/01)/use-http-client-of-you-not-because /) – Crowcoder

+0

[HttpClient - このインスタンスは既に開始されています]の重複している可能性があります(https://stackoverflow.com/questions/42235677/httpclient-this-インスタンスが既に開始している) – Nico

答えて

2

を設定する必要がある場合は、誰も私を提案してくださいすることができます。私はまた、.Resultを呼び出すことが貧弱な方法であり、これが非同期メソッドであることがわかるので、結果を変更するために自由を取った。

これも読んでください:https://aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/

関連する問題