我想为 ApiController 创建扩展方法以便能够返回自定义内容。
我的想法是用我自己的详细信息返回自定义错误。
我想返回类似于返回的错误的自定义错误OAuthAuthorizationServerProvider
:
{
"error": "invalid_grant",
"error_description": "You have 3 more attempts before Your account will be locked."
}
在我的 ApiController 中我添加了这个方法:
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);
}
这给了我很好看的回应:
{
"error": "40001",
"error_description": "Somethis is wrong"
}
我尝试将其转换为以下扩展方法:
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?