2013-12-19 5 views
4

У меня возникла проблема с вызовом метода post HttpClient из приложения WP. PostAsync всегда зависает и не дает ответа. Тот же код работает, когда я пытаюсь его использовать из приложения WPF. Вот что я делаю:Windows Phone HttpClient PostAsync повесить без ответа

сервера код Web API

public class GameController : ApiController 
{ 
[HttpPost] 

public GameDto CreateGame(GameDto gameDto) 
     { 
      try 
     { 
      GameManager bl = new GameManager(); 
      gameDto = bl.CreateGame(gameDto); 
      return gameDto; 
     } 
     catch (Exception) 
     { 

      throw; 
     } 
    } 
} 

Client код КР8 вызова из библиотеки классов

private async void Button_Click(object sender, RoutedEventArgs e) 
     { 
      try 
      { 


HttpClient client = new HttpClient(); 
client.BaseAddress = new Uri("http://localhost:59580"); 
      client.DefaultRequestHeaders.Accept.Add(
       new MediaTypeWithQualityHeaderValue("application/json"));    
GameDto newGame = new GameDto(); 
       newGame.CreatedBy = 1; 
      newGame.Name = txtGameName.Text; 
      newGame.GameTypeId = (int)cmbGameType.SelectedValue; 
      MediaTypeFormatter jsonFormatter = new JsonMediaTypeFormatter(); 
      var response = await client.PostAsync<GameDto>("api/Game/CreateGame", newGame, jsonFormatter); 
      response.EnsureSuccessStatusCode(); // Throw on error code. 
      var userDto = await response.Content.ReadAsAsync<GameDto>(); 
      //_products.CopyFrom(products); 
      MessageBox.Show(userDto.Id.ToString()); 
     } 
     catch (Exception) 
     { 

      throw; 
     } 

    } 
+0

Где код? Кстати, бессмысленно ловить исключение только для его свержения. –

+0

Также 'http: // localhost' является самим телефоном/эмулятором - это почти наверняка не то, что вы хотите сделать. –

+0

Кодовые блоки на response.EnsureSuccessStatusCode(); , Обработка исключений еще не завершена. Http: \\ localhost is dummy Я использую другой URL WebAPi. –

ответ

4

Checkout Это Answer res.olved мой вопрос. Использование ConfigureAwait

var result = await httpClient.GetStreamAsync("weeklyplan") 
         .ConfigureAwait(continueOnCapturedContext:false); 
+0

Спасибо RK, это исправило мою проблему! –

Смежные вопросы