カスタムコンテンツを返すためのApiControllerの拡張メソッドを作成したいと思います。
私の考えは、自分の詳細でカスタムエラーを返すことです。 は私がOAuthAuthorizationServerProvider
によって返されるエラーに似たカスタムエラーを返すようにしたい:私は、このメソッドを追加しました私のApiController内部ApiController拡張メソッド - ResponseMessageにアクセスできない
{
"error": "invalid_grant",
"error_description": "You have 3 more attempts before Your account will be locked."
}
:
{
"error": "40001",
"error_description": "Somethis is wrong"
}
:これは私に見栄えの良い応答を与える
public IHttpActionResult Test()
{
HttpError err = new HttpError();
err["error"] = "40001";
err["error_description"] = "Something is wrong";
var response = Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
return ResponseMessage(response);
}
これを以下の拡張方法に変換しようとしました:
public static class ApiControllerExtensions
{
public static IHttpActionResult BadRequest(this ApiController apiController, string error, string errorDetails)
{
HttpError err = new HttpError();
err["error"] = error;
err["error_description"] = errorDetails;
var response = apiController.Request.CreateErrorResponse(HttpStatusCode.NotFound, err);
return apiController.ResponseMessage(response);
}
}
が、私はエラーを取得:Cannot access protected internal method 'ResponseMessage' here
私はカスタムベースApiControllerを作成し、そこにそのメソッドを追加することができます知っているが、私は他のプロジェクトで再利用しやすくなりますので、拡張メソッドを作成したいと思います。
ApiController拡張メソッドからIHttpActionResultを返すにはどうすればよいですか?
独自のCustomApiCon内部クラスを呼び出すpublic仮想ResponseMessageメソッドを実装していますか?次に、CustomApiController – benjrb
の拡張メソッドを作成して、基本クラスに保持します。それは同じだ。 –
@benjrb私はこのようにすることができますが、私はまだCustomApiControllerを使用する必要がある場合は、拡張メソッドを持つ点は何ですか。私はそれを避け、カスタム基本クラスではなく、ApiControllerの拡張クラスを持っていたい – Misiu