Вызов метода Put в веб-API с asp.net MVC в качестве клиента

Я создал Web-api со следующим методом put

public HttpResponseMessage Put (int id, модель [FromBody] DataModel)

в методе put я передаю объект, и он обновляется в базе данных. Его работа, которую я проверил с помощью скрипача.

Теперь в моем приложении MVC я вызываю его, используя следующий код

[HttpPost]
    public JsonResult OrderSearch(DataModel model)
    {
        UpdateOrder(model).Wait();
        if (putresult != null && putresult != string.Empty)
        {
            return Json(putresult);
        }
        else
        {
            return Json("Error in getting result");
        }
    }

    private async Task UpdateOrder(DataModel model)
    {
       string json = JsonConvert.SerializeObject(model);
       using (var client = new HttpClient())
       {
           client.BaseAddress = new Uri(url);
           client.DefaultRequestHeaders.Accept.Clear();
           client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));


           HttpResponseMessage response = client.PutAsync("api/values/"+ model.OrderNo,new StringContent(json)).Result;

           if (response.IsSuccessStatusCode)
           {
               putresult = await response.Content.ReadAsAsync<string>();

           }
       }

    }

Но код не попадает в мой метод Put в сервисе, и putresult остается пустым. Я пытаюсь найти информацию об использовании PutAsync, но ничего не могу найти, поэтому, пожалуйста, помогите.


comment
Вы используете метод размещения на почте?   -  person BlakeH    schedule 07.04.2014
comment
Итак, OrderSearch - это частичное представление, когда пользователь редактирует информацию, которую он хочет, он нажимает кнопку отправки и публикует данные, теперь, поскольку данные не новые, они уже доступны, поэтому я использую put для обновления предыдущего.   -  person Mohit    schedule 07.04.2014


Ответы (1)


Использование .Wait в любом приложении среды выполнения ASP.NET может привести к взаимоблокировке. Я не уверен, как вы должны обрабатывать асинхронные методы в MVC.

person Darrel Miller    schedule 07.04.2014
comment
да, если кто-то обращаться по неосторожности. но в моем случае вышеуказанный клиент вызывает API, мой get и get (int) вызываются и возвращают правильные значения, но put (подпись, указанная в вопросе) не вызывается. - person Mohit; 09.04.2014