1

わかりました、私は主題についてお詫び申し上げます。他にどのように尋ねればよいか本当にわかりませんでした。

Web API にはカスタム ディスパッチャーがあり、ヘッダーに埋め込まれたバージョン番号に基づいてさまざまなコントローラーを選択できます。私たちが直面している問題は、このクラスでスローされた例外がフレームワークによって黙って処理されていることです。むしろ、例外をキャッチして処理を試みることはできますが、このレベルではデフォルトの応答を変更する明確な方法がないため、すべての処理が無視されます。

私たちが現在追求している回避策は、基本的に、この例外がスローされたときにコントローラーを選択しているという事実を活用することです。そのため、その例外をキャッチし、コントローラーを送信して、その再スローを行います。当社のエラー フィルターでキャッチできます。ぎこちなく聞こえますが、それが私たちが取り組んでいることです。私が今扱っている問題は、作成した例外コントローラーを選択して再スローするようになりましたが、例外オブジェクトをこのコントローラーに送信する方法がわかりません。以下は catch ブロックの例です。

catch(Exception ex)
{
    var routeValues = request.GetRouteData().Values;
    routeValues["controller"] = "Exception";
    routeValues["action"] = "Exception";
    controllerDescriptor = new HttpControllerDescriptor(_config, "exceptionController", typeof(ExceptionController));

}
return controllerDescriptor;

コントローラー メソッドには、次のシグネチャがあります。

[HttpPost]
public void Exception(Exception ex)

私の最初の本能は、タイプ HttpRequestMessage のリクエスト本文を変更することですが、その方法がよくわかりません。ExceptionController が呼び出される前に、そのリクエストを変更できるはずです。

問題は、リクエストオブジェクトを変更して例外オブジェクトを与えるにはどうすればよいか、またはこれについて別の方法があるかということだと思います。

ティア

4

0 に答える 0