Как просмотреть тело запроса в ASP.NET Web API из Visual Studio? - программирование
Подтвердить что ты не робот

Как просмотреть тело запроса в ASP.NET Web API из Visual Studio?

Как я могу просмотреть тело запроса в веб-API ASP.NET из Visual Studio? В ASP.NET MVC вы можете использовать QuickWatch для проверки объекта Request и просмотра содержимого тела и любых опубликованных данных формы. Из того, что я читал, ASP.NET Web API не позволяет вам читать тело более одного раза.

Это очень раздражает, когда вы пытаетесь понять, почему конкретное значение не было связано правильно. Есть ли быстрый способ сделать это без настройки трассировки/регистрации?

4b9b3361

Ответ 1

Проще всего установить Fiddler. Затем вы увидите все, что отправляется по проводу, и проверяйте не только полезную нагрузку запроса, но и заголовки HTTP. И если вы используете API из javascript, такие вещи, как FireBug, панель инструментов разработчика Chrome и средства разработки IE, покажут вам все сетевые запросы, сделанные веб-сайтом.

Если вам абсолютно необходимо проверить трафик на сервере, то если вы размещаете свой веб-API в приложении ASP.NET, вы можете поместить следующую строку в свое ближайшее окно:

new StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()

Ответ 2

, если вам нужно тело → Form-data​​strong >

Опубликовать localhost: 53356/api/carparksapi/GetRecod

key = jsonRequest и value = [{ "abcd": "zxxx" }]

       //  API -Controller Method :: 

        var httpContext = (HttpContextWrapper)Request.Properties["MS_HttpContext"];
        var foo = httpContext.Request.Form["jsonRequest"];
        return foo; //This is value passed in request

Ответ 3

Для меня @DarinDimitrov ответ дал

error CS0246: Не удалось найти имя типа или пространства имен StreamReader (вам не хватает директивы using или ссылки на сборку?)

Добавление пространства имён

new System.IO.StreamReader(HttpContext.Current.Request.InputStream).ReadToEnd()

Надеюсь, это сэкономит вам время.

Ответ 4

Для меня @Matas Vaitkevicius ответ дал

ошибка CS1061: "HttpContextBase" не содержит определения для "Текущий" и не используется метод расширения "Текущий", принимающий первый аргумент типа "HttpContextBase" можно найти (вам не хватает использования директива или ссылка на сборку?)

Замена HttpContext.Current на System.Web.HttpContext.Current сделала это для меня

new System.IO.StreamReader(System.Web.HttpContext.Current.Request.InputStream).ReadToEnd()

Надеюсь, это сэкономит вам время.