We've been getting sporadic fails when uploading our builds using the Powershell API, so I am trying to implement the process in C# to see if it works any better. Is there documentation anywhere for doing that?
I think it is almost working - I am getting the upload URL and it seems to upload my build OK. The Create Build step is failing, however. It's returning this:
Error MultiplayerServerBadRequest PlayFab.PlayFabErrorCode
+ ErrorDetails Count = 1 System.Collections.Generic.Dictionary<string, string[]>
ErrorMessage "MultiplayerServerBadRequest - ValidationError - There were errors during request validation." string
HttpCode 400 int
HttpStatus "BadRequest" string
RequestId "Failed to Enumerate RequestId. Exception message: Enumeration has not started. Call MoveNext." string
Here is how I'm trying to create the build:
protected static void CreateBuild(string fileName, string Token, int port) { List<PlayFab.MultiplayerModels.Port> ports = new List<PlayFab.MultiplayerModels.Port>(); PlayFab.MultiplayerModels.Port port = new PlayFab.MultiplayerModels.Port(); port.Name = "game_port"; port.Num = port; port.Protocol = PlayFab.MultiplayerModels.ProtocolType.UDP; ports.Add(port); List<PlayFab.MultiplayerModels.AssetReferenceParams> assets = new List<PlayFab.MultiplayerModels.AssetReferenceParams>(); PlayFab.MultiplayerModels.AssetReferenceParams assetReferenceParams = new PlayFab.MultiplayerModels.AssetReferenceParams(); assetReferenceParams.FileName = fileName; assetReferenceParams.MountPath = "C://Assets"; assets.Add(assetReferenceParams); List<PlayFab.MultiplayerModels.BuildRegionParams> buildRegionParams = new List<PlayFab.MultiplayerModels.BuildRegionParams>(); PlayFab.MultiplayerModels.BuildRegionParams buildRegionParam = new PlayFab.MultiplayerModels.BuildRegionParams(); buildRegionParam.Region = "EastUS"; buildRegionParam.MaxServers = 1; buildRegionParam.StandbyServers = 0; buildRegionParams.Add(buildRegionParam); string buildName = System.IO.Path.GetFileNameWithoutExtension(fileName); var createBuildTask = PlayFab.PlayFabMultiplayerAPI.CreateBuildWithManagedContainerAsync(new PlayFab.MultiplayerModels.CreateBuildWithManagedContainerRequest() //PlayFab.PlayFabMultiplayerAPI.CreateBuildWithManagedContainer(new PlayFab.MultiplayerModels.CreateBuildWithManagedContainerRequest() { //AuthenticationContext = new PlayFab.PlayFabAuthenticationContext() { EntityToken = Token }, BuildName = buildName, ContainerFlavor = PlayFab.MultiplayerModels.ContainerFlavor.ManagedWindowsServerCore, GameAssetReferences = assets, MultiplayerServerCountPerVm = 1, Ports = ports, RegionConfigurations = buildRegionParams, StartMultiplayerServerCommand = "C:\\Assets\\Server.exe", VmSize = PlayFab.MultiplayerModels.AzureVmSize.Standard_D4as_v4 }); createBuildTask.Wait(); if (createBuildTask.Result.Result != null) { Console.WriteLine("Success?" + createBuildTask); } else { Console.WriteLine("createBuildTask Error: " + createBuildTask.Result.Error.ErrorMessage); } }