私はASP.NET Web API 2のためにC#で書いています。私が望むのは、自分のWeb APIに付随するすべてのリクエストに対して実行されるキャッチオールメソッドです。ASP.NET Web API - ルーティングされたメソッドより前のすべての要求に対して呼び出されるメソッドですか?
このメソッドがnullを返す場合は、正しい方法を探して、元のルーティングを続行する必要があります。しかし、メソッドがHTTPResponseMessageを返す場合、サーバーはその応答を返し、通常のルーティングに進む必要はありません。
ユースケースは、API全体に影響を与えるさまざまなシナリオを処理する能力です。たとえば、特定のユーザーエージェントをブロック(またはホワイトリスト)する1つのIPアドレスを禁止し、APIコールのカウントを処理します(たとえば、の任意の APIメソッドに対してXリクエストをY分だけ行うことができます)。
今私が想像することができる唯一の方法は、文字通りAPIのために書いたすべての新しいメソッドにメソッド呼び出しを含めることです。たとえば、
[HttpGet]
public HttpResponseMessage myNewMethod()
{
// I want to avoid having to do this in every single method.
var check = methodThatEitherReturnsResponseOrNull(Request);
if (check != null) return (HttpResponseMessage)check;
// The method returned null so we go ahead with normal processing.
...
}
ルーティングでこれを達成する方法はありますか?