API-шлюз Websocket @ Конечная точка подключения не найдена - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь отправить сообщение сокета потенциально подключенному клиенту по маршруту $ connect.Я успешно получил идентификатор соединения из DynamodB.Всякий раз, когда я пытаюсь что-либо отправить, я получаю сообщение об ошибке:

No method found matching route %40connections/aM50DdTXCYcCGEA%3D for http method POST

Код, который я использую для отправки:

Amazon.Runtime.AWSCredentials cd = new Amazon.Runtime.BasicAWSCredentials("*******", "******");

var domainName = request.RequestContext.DomainName;
var endpoint = $"https://{domainName}/{stage}";
context.Logger.LogLine($"API Gateway management endpoint: {endpoint}");

 apiClient = new AmazonApiGatewayManagementApiClient(cd,
                new AmazonApiGatewayManagementApiConfig
                {
                    ServiceURL = endpoint,
                    RegionEndpoint = Amazon.RegionEndpoint.USEast2
                });
Message testMessage = new Message()
            {
                AppId = "TestApp",
                CommandData = "Testing"
            };


MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(testMessage)));

PostToConnectionResponse response = await apiClient.PostToConnectionAsync(new PostToConnectionRequest()
                    {
                        ConnectionId = Uri.EscapeUriString(existing.ConnectionId),
                        Data = stream
                    });

Я не могу найти ничего, чтопредполагает, что конечная точка для POST не работает (у меня есть рабочий образец в nodejs, но нам нужно это сделать в .Net).Если у кого-то есть какие-либо предложения о том, как мне найти причину проблемы, это будет с благодарностью.

Я подтвердил, что конечная точка соответствует URL развернутого URL-адреса шлюза WebSocket.

Visual Studio 2017

.Net Core 2.1

AWSSDK.ApiGatewayManagementApi 3.3.100.23

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Я закончил тем, что удалил все роли IAM и сделал их заново.Я думаю, что-то было неправильно настроено, или если IAM использует какую-либо систему кэширования, возможно, она была привязана к более старой версии.Это работает сейчас, хотя.Извините за задержку опубликовать мои выводы здесь!

0 голосов
/ 07 июня 2019

Я сделал более менее тот же код, и он работает

        AmazonApiGatewayManagementApiClient client = new AmazonApiGatewayManagementApiClient(new AmazonApiGatewayManagementApiConfig() {
            ServiceURL = "https://" + request.RequestContext.DomainName + "/" + request.RequestContext.Stage
        });

        MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(document)));
        PostToConnectionRequest postRequest = new PostToConnectionRequest()
        {
            ConnectionId = request.RequestContext.ConnectionId,
            Data = stream
        };

        var result = client.PostToConnectionAsync(postRequest);
        result.Wait();
...