これが私のルートです
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; }
}
そして投稿データ
{
"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"
}
そしてURL
http://localhost:5879/api/game/HostGame/
よし、何らかの理由でそのデータを投げると、 で適切なアクションになりGameController
ますが、引数request
は常にnull
です。かなりのバリエーションを試しましたが、うまくいかないようです。
ここで私が間違っているかもしれないアイデアはありますか?