Пожалуйста, дайте мне понять, как работают три модуля в asp.net Web API 2.1
- Среднее ПО Owin
- HttpMessageHandler (или DelegatingHandler)
- ExceptionHandler
То, что я пытаюсь сделать, - это разработать и веб-api, который будет предоставлять данные json с постоянным форматом, означает, что фактические данные
{"Id":1,"UserName":"abc","Email":"[email protected]"}
Затем мне нравится доставлять json как
{__d:{"Id":1,"UserName":"abc","Email":"[email protected]"}, code:200, somekey: "somevalue"}
Для этого я попытался использовать пользовательский ActionFilterAttribute, но я чувствую (все еще не подтвержден), что это не могло доставить аналогично сформированные данные в случае, если код встретил исключение
Пожалуйста, предложите мне лучшее направление.
Вот мой краткий фрагмент кода пользовательского атрибута. Также предположим, что пользовательский атрибут подходит для этой цели
[AttributeUsage(AttributeTargets.Method | AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
public class ResponseNormalizationAttribute : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
var response = actionExecutedContext.Response;
object contentValue;
if (response.TryGetContentValue(out contentValue))
{
var nval = new { data=contentValue, status = 200 };
var newResponse = new HttpResponseMessage { Content = new ObjectContent(nval.GetType(), nval, new JsonMediaTypeFormatter()) };
newResponse.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
actionContext.Response = newResponse;
}
}
}