2013-02-22 4 views
0

이 좋아 여기 내 경로WebApi 컨트롤러는

 Config.Routes.MapHttpRoute(
      name: "Default", 
      routeTemplate: "api/{controller}/{action}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

그리고 내 컨트롤러

public class GameController : ApiController 
{ 
    internal static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); 
    [HttpGet,HttpPost] 
    public IEnumerable<HostedGame> List() 
    { 
     return new HostedGame[0]; 
    } 

    [HttpPost] 
    public Guid? HostGame(HostedGameRequest request) 
    { 
     try 
     { 
      var r = this.Request.Content.ReadAsStringAsync(); 
      var id = SasManagerHub.NextConnectionId; 
      //var hg = request.ToHostedGameSasRequest(); 
      //GameManager.GetContext().SasManagerHub.Out.Client(id).StartGame(hg); 
      //return hg.Id; 
      return null; 
     } 
     catch (Exception e) 
     { 
      Log.Fatal("HostGame error",e); 
      return null; 
     } 
    } 
} 

그리고 내 모델

public class HostedGame 
{ 
    public Guid Id { get; set; } 

    public string Name { get; set; } 

    public string HostUserName { get; set; } 

    public string GameName { get; set; } 

    public Guid GameId { get; set; } 

    public Version GameVersion { get; set; } 

    public bool HasPassword { get; set; } 
} 

public class HostedGameRequest : HostedGame 
{ 
    public string Password { get; set; } 
} 

그리고 포스트 데이터의 널 (null)을 제공

{ 
    "Id":"c883fb55-9adc-4ab8-a46c-614d2874301c", 
    "Name":"a", 
    "HostUserName":"b", 
    "GameName":"c", 
    "GameId":"c883fb55-9adc-4ab8-a46c-614d2874301c", 
    "GameVersion":"1.1.1.1", 
    "HasPassword":"true", 
    "Password":"asdf" 
} 
,691,363 (210)

그리고 URL

http://localhost:5879/api/game/HostGame/

좋아, 어떤 이유로 있도록하는 것은 나는의 데이터가,가 GameController의 적절한 조치로 만들지 만, 인수 request 항상 null 것을 던져 때. 나는 꽤 많은 변형을 시도했으나 효과가없는 것처럼 보입니다.

내가 여기서 잘못하고있는 아이디어가 있습니까?

+0

jQuery 또는 Fiddler에서 요청을 게시하는 방법은 무엇입니까? –

답변

1

게시물 요청에 application/json이라는 헤더 content-type을 전달했는지 확인하십시오.

+0

차가움. 버전을 제외하고 모든 것을 수정하여 오른쪽 구문 분석을 원하지 않습니다. –

+0

아, 그 대답을 찾았습니다. http://stackoverflow.com/questions/12592746/why-does-webapi-fail-to-bind-a-system-version-parameter –