Я пытаюсь отправить сообщение сокета потенциально подключенному клиенту с маршрута $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-адресу шлюза API WebSocket.
Визуальная студия 2017
.Сетевое ядро 2.1
AWSSDK.ApiGatewayManagementApi 3.3.100.23
Спасибо!





Я сделал более менее тот же код, и он работает
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();
В итоге я удалил все роли IAM и создал их заново. Я предполагаю, что что-то было неправильно настроено, или если IAM использует какую-либо систему кэширования, возможно, она заблокирована для более старой версии. Хотя сейчас это работает. Извините за задержку с публикацией моих выводов здесь!
Ваш ответ дает очень мало информации, кроме кода. сломать ПОЧЕМУ что-то делается