2013-12-19 85 views
4

我在WP应用程序调用HttpClient post方法有问题。PostAsync总是挂起,并没有给出任何回应。当我从WPF应用程序尝试它时,相同的代码工作。下面是我在做什么:Windows手机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; 
     } 
    } 
} 

客户端WP8代码类库调用

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是虚拟的,我使用了不同的WebAPI URL。 –

回答

4

结帐这 Answer res.olved我的问题。 使用ConfigureAwait

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

谢谢RK,这也解决了我的问题! –

相关问题