委任ハンドラで例外をキャッチしようとしています。私が持っている私のWebApiConfig.csでキャッチしようasync webapiで動作しない
:
config.MessageHandlers.Add(new TestHandler1());
私は
public class TestHandler1 : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
HttpResponseMessage response = null;
try
{
response = await base.SendAsync(request, cancellationToken);
}
catch (Exception ex)
{
}
return response;
}
}
の委譲ハンドラを持っている私は、委任ハンドラ内
public class DefaultController : ApiController
{
public async Task<HttpResponseMessage> Get()
{
throw new Exception();
}
}
のコントローラキャッチを持っています捕まえられていない何故なの?
を例外処理に使用しようとしているされているハンドラを委任するカスタム、必要ないよう
また次のリンクをご確認くださいHttpResponseMessage> Get() '(おそらく別の非同期メソッドへの呼び出し) –
私の実際のコードでは、service.DoStuff()を呼び出す必要がありますが、例外をスローすると例外ハンドラはエラーをキャッチしません。この例は単なる単純なものでした。その例外はスローされているが、キャッチされていない例外をシミュレートしています。 – martint73
例外がキャッチされていないと言ったので、少し混乱します。それは捕まえられ、それがレスポンス500を見る理由です。別のレスポンスヘッダーがありますか?あなたはTestHandler1に捕らえられていないのは間違いありません。なぜなら、それは500回の応答に変換する前に処理されているからです。 – dotnetstep