как отправить запрос из консольного приложения в вебапи - PullRequest
0 голосов
/ 29 марта 2020

Когда я отправляю почтовый запрос из консольного приложения в webapi, я получаю сообщение об ошибке 404

контроллер веб-API

// POST: api/Intervals
        [HttpPost]
        public async Task<ActionResult> PostIntervals(Intervals intervals)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest("Not a valid data");
            }

            _context.Intervals.Add(intervals);
            await _context.SaveChangesAsync();

            return Ok();
        }

моя модель в веб-интерфейсе

public class Intervals
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        [DataType(DataType.Date)]
        public DateTime DateStart { get; set; }
        [DataType(DataType.Date)]
        public DateTime DateEnd { get; set; }
    }

это консольный метод

public class Interval
        {
            public int Id { get; set; }
            public DateTime DateStart { get; set; }
            public DateTime DateEnd { get; set; }
        }
    static void Main(string[] args)
                {
                    CreateIntervalAsync().GetAwaiter().GetResult();
                }

    static async Task<Interval> CreateIntervalAsync()
            {
                var intervalForTest = new List<Interval>()
                {
                    new Interval {Id = 1, DateStart = new DateTime(2018, 01, 01), DateEnd = new DateTime(2018, 01, 03)},
                    new Interval {Id = 2, DateStart = new DateTime(2018, 01, 01), DateEnd = new DateTime(2018, 01, 31)}
                };
                var jsonIntervalSerialize = JsonConvert.SerializeObject(intervalForTest);

                HttpClient client = new HttpClient();

                Uri uri = new Uri($"https://localhost:44323");
                var statusCode = HttpStatusCode.NotFound;
                var httpResponse = await client.PostAsync(uri,
                    new StringContent(jsonIntervalSerialize, Encoding.Default, "application/json"));

if (httpResponse.StatusCode == statusCode) 
                {
                    Task delay = Task.Delay(13000);
                    await delay;
                    httpResponse = await client.PostAsync(uri,
                        new StringContent(jsonIntervalSerialize, Encoding.Default, "application/json"));
                }
                Console.WriteLine("{0}", httpResponse);
                if (!httpResponse.IsSuccessStatusCode)
                {
                    throw new Exception("Cannot add a interval task");
                }

                var createdTask = JsonConvert.DeserializeObject<Interval>(await httpResponse.Content.ReadAsStringAsync());
                return createdTask;
    }

Console.WriteLine ("{0}", httpResponse) - эта команда выдает ошибку 404. Затем я пробую Waite и снова делаю почтовые запросы. но это дает ту же ошибку. С рабочего стола я отправляю json сериализовать объект, но в веб-API получает PostIntervals(Intervals intervals) - это правильно? Как это исправить?

...