[Редактировать: исходные фрагменты кода были неправильными.]
[Этот пост призван помочь ответить на конкретный вопрос, на который я нашел отличный ответ. Я ссылаюсь на свой пример сообщения, за которым я следил, а затем на сообщение, которое дало мне ответ. Затем я публикую код, который я успешно использовал для получения результатов, которых я добился.]
Я реализовал простую технику проверки на входе в ApiController. Следующий код был функциональным, но, как вы можете видеть, он предоставлял только общее сообщение об ошибке.
Ответ, который я нашел, чтобы направить меня к этой технике, находится здесь: https://stackoverflow.com/a/19322688/7637275
Ниже приведен мой код, с которого я начал:
using System.Web.Http;
using System.Web.Routing;
using System.Web.Http.Controllers;
using System.Web;
using System.Web.Http.Filters;
namespace TestValidation
{
internal class ValidateModelStateFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (!actionContext.ModelState.IsValid)
{
throw new HttpException(422, "Validation failed on input");
}
}
}
}
В следующем фрагменте показана ошибка проверки, которую мне нужно было увидеть, вместо общего сообщения, указанного выше.
[Required(ErrorMessage = @"Parameter ""ID"" is required.")]
[MaxLength(18, ErrorMessage = @"Exceeded max length (18 characters) for parameter ""ID""")]
public string ID { get; set; }
На данный момент, в моем переопределении, мне нужно копаться в объекте HttpActionContent «actionContext», чтобы найти настроенные сообщения об ошибках.