5

HTTP world が一方向呼び出しに最適な選択ではないこと、および WebApi が HTTP 冗長通信に最適に設計されていることを完全に理解しています。間違いなく、ここでは WCF が勝者です。しかし、多数の動詞が公開された ApiController が既にあり、ある時点で 1 つの一方向呼び出しも必要になった場合はどうなるでしょうか。そして、そのために別のサービス (WCF) をホスト/維持したくありません。

Task<HttpResponseMessage> response = client.PostAsJsonAsync<Log>("api/log", log)

応答を処理しないと、ファイア アンド フォーゲットに似た状況になります。これが WebApi の唯一の方法ですか、それとも別の解決策がありますか?

4

2 に答える 2

6

このように呼び出して、返されたタスクを無視してみませんか?

client.PostAsJsonAsync<Log>("api/log", log);

すべての呼び出しでこれを行い、必要に応じて応答パイプラインでハンドラーを使用して応答を処理します。

于 2012-12-18T19:21:05.930 に答える
5

最善の策は、タスクを返すのではなく、新しいタスクを開始してすぐに応答を送信することです。

public void PostDoFireAndForget() // and NOT public Task PostDoFireAndForget()
    {
        Task.Factory.StartNew
            (() =>
                {
                    // ... start the operation here
                    // make sure you have an exception handler!!
                }

            );

    }
于 2012-12-18T17:39:26.117 に答える