私のカスタムサービスで非同期メソッドを使用するコントローラを作成することです。WebAPI:ビジネスロジックで非同期メソッドを使用
コントローラー:
[Route("api/data/summary")]
[HttpGet]
public async Task<IHttpActionResult> Get()
{
var result = await DataService.GetDataObjects();
return Ok(result);
}
サービス:
public static async Task<IEnumerable<DataObject>> GetDataObjects()
{
var apiKey = "some-api-key";
var path = "path-to-external-service";
using (var client = new HttpClient())
{
var dataToProcess = // some data object
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
client.BaseAddress = new Uri(path);
HttpResponseMessage response = await client.PostAsJsonAsync("", dataToProcess);
var content = await response.Content.ReadAsStringAsync();
var result = MakeEntities(content); // some logic
return result;
}
}
しかし、私は、コントローラのアクションは、サービス実際に終了したデータを処理する前に、空の結果を返す問題に出くわしました。
正しく実装する方法を教えてください。
コードを見てみると、サービスがデータの処理を終了する前に結果を返すことができ、コントローラのアクションのようには見えません。サービスをデバッグして、期待される出力が何であるかを調べることができますか? –
ASP .NET Webアプリケーションのどのような使い方ですか? 'GetDataObjects'の実行中に例外を受け取らないようにしてください。 – Pavel
あなたはいつも復帰しています。アプリケーションが例外を起こしていないと確信していますか? – Tinwor