Nie można odczytać zawartości filtru akcji Web API

Podobne pytanie:Parametr akcji Web API jest sporadycznie zerowy ihttp://social.msdn.microsoft.com/Forums/vstudio/en-US/25753b53-95b3-4252-b034-7e086341ad20/web-api-action-parameter-is-intermittently-null

Cześć!

Tworzę ActionFilterAttribute w ASP.Net MVC WebAPI 4, dzięki czemu mogę zastosować atrybut w metodach działania w kontrolerze, który wymaga walidacji tokena przed wykonaniem go w następujący kod:

public class TokenValidationAttribute : ActionFilterAttribute
{
        public override void OnActionExecuting(HttpActionContext filterContext)
        {
        //Tried this way
        var result = string.Empty;
        filterContext.Request.Content.ReadAsStringAsync().ContinueWith((r)=> content = r.Result);

        //And this
        var result = filterContext.Request.Content.ReadAsStringAsync().Result;

        //And this
        var bytes = await request.Content.ReadAsByteArrayAsync().Result;
        var str = System.Text.Encoding.UTF8.GetString(bytes);

        //omit the other code that use this string below here for simplicity
    }
}

Próbuję odczytać treść jako łańcuch. Próbowałem 3 sposoby, jak podano w tym kodzie, a wszystkie z nich wracają puste. Wiem, że w WebApi mogę czytać tylko raz treść żądania, więc komentuję wszystko inne w kodzie i próbuję go uruchomić, aby zobaczyć, czy otrzymuję wynik. Chodzi o to, że klient, a nawet skrzypek, zgłasza 315 długość treści żądania. Ten sam rozmiar pojawia się również w nagłówku treści serwera, ale kiedy próbujemy odczytać zawartość, jest ona pusta.

Jeśli usuwam atrybut i wykonuję to samo żądanie, kontroler jest dobrze wywoływany, a deserializacja Jsona zachodzi bez zarzutu. Jeśli umieściłem atrybut, wszystko, co dostaję, to pusty ciąg z treści. Zdarza się ZAWSZE. Nie przerywany jako stan pytań powiązanych.

Co ja robię źle? Pamiętaj, że używam ActionFilter zamiast DelegatingHandler, ponieważ tylko wybrane akcje wymagają sprawdzenia poprawności tokenu przed wykonaniem.

Dzięki za pomoc! Bardzo to doceniam.

Pozdrowienia...

Gutemberg

questionAnswers(1)

yourAnswerToTheQuestion