powered by simpleCommunicator - 2.0.27     © 2024 Programmizd 02
Map
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Ошибка обработки POST запроса между сервисами
21 сообщений из 21, страница 1 из 1
Ошибка обработки POST запроса между сервисами
    #40101162
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Есть сервис расположенный по адресу https://ххх.рф (основной), у него есть API с маршрутом до него - https://ххх.рф/api/AcceptReplyMessageBot :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
[HttpPost("AcceptReplyMessageBot")]
        public async Task<IActionResult> AcceptReplyMessageBot([FromBody] MessageData messageData)
        {
            Friend friend;
        ResponseMessageData responseMessage;
        string jsonResponse;
        string numberPhone = messageData.PhoneNumber != null ? ServicePhoneNumber.LeaveOnlyNumbers(messageData.PhoneNumber) : null;
        if (numberPhone != null && numberPhone.Length > 10)
        {
            friend = _serviceFriends.FindUserByPhoneNumber(numberPhone);
        }
        else
        {
            responseMessage = new ResponseMessageData { Status = "Invalid phone number" };
            return Ok(responseMessage);
        }
 
        string textQrCode;
        Byte[] byteCode = null;
 
        if (friend != null) {
            textQrCode = friend.TextQRcode;
        }
        else
        {
            responseMessage = new ResponseMessageData { Status = "Not found" };
            return Ok(responseMessage);
        }
 
        if(friend.ByteQrcode != null)
        {
            byteCode = friend.ByteQrcode;
        }
 
        if(textQrCode != null && byteCode != null)
        {
            responseMessage = new ResponseMessageData { PhoneNumber = friend.Telephone, TextMessage = textQrCode, ByteQrcode = byteCode };
        }
        else if (textQrCode != null)
        {
            responseMessage = new ResponseMessageData { PhoneNumber = friend.Telephone, TextMessage = textQrCode};
        }
        else
        {
            responseMessage = new ResponseMessageData { TextMessage = "Участнику с данным номером телефона не присвоен QR-код!" };
        }
        //jsonResponse = JsonSerializer.Serialize(responseMessage);
 
        return Ok(responseMessage);
        }



Есть другой микро сервис по адресу https://messanger.ххх.рф (TLmessenger), который отправляет на вышеописанный основной сервис POST запросы и обрабатывает от него ответы:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
[HttpPost]
    public async Task<IActionResult> Post([FromBody] Update update)
    {
 
        if (update == null) return Ok();
 
        string responseMessage = "";
        if (message != null)
        {
            responseMessage = "Укажите номер в федеральном формате (+7хххххххххх)";
 
            if (message.ReplyToMessage != null)
            {
                string messageNumberPhone;
                switch (message.ReplyToMessage.Text)
                {
                    case "Укажите номер в федеральном формате (+7хххххххххх)":
                        messageNumberPhone = ServicePhoneNumber.LeaveOnlyNumbers(message.Text);
 
                        if (messageNumberPhone.Length < 11 || messageNumberPhone.Length > 12)
                        {
                            await _telegramBotClient.SendTextMessageAsync(message.From.Id, "Номер указан в неверном формате. Ждем Ваш номер в федеральном формате (+7хххххххххх)", ParseMode.Default, replyMarkup: new ForceReplyMarkup { Selective = true });
                        }
                        else
                        {
                            MessageData requestMessage = _messageDataService.CreateMessageData(update, this.HttpContext.Request.Host.Value.ToString());
 
                            // Отправка запроса на API др. сервиса
                            string jsonRequest = JsonSerializer.Serialize(requestMessage);
                            string jsonResponseData = await PostRequestHttpAsync(url, jsonRequest);
                            ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);
 
                            if (!responseData.Status.Equals("NotFound") && responseData.TextMessage != null)
                            {
                                string responseMessageFromDB = responseData.TextMessage;
                                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, responseMessageFromDB);
                            }
                            else {
                                string responseMessageFromDB = "Участник с данным номером телефона не найден!";
                                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, responseMessageFromDB);
                            }
                        }
                        break;
 
                    case "Номер указан в неверном формате. Ждем Ваш номер в федеральном формате (+7хххххххххх)":
                        messageNumberPhone = ServicePhoneNumber.LeaveOnlyNumbers(message.Text);
 
                        if (messageNumberPhone.Length < 11 || messageNumberPhone.Length > 12)
                        {
                            await _telegramBotClient.SendTextMessageAsync(message.From.Id, "Номер указан в неверном формате. Ждем Ваш номер в федеральном формате (+7хххххххххх)", ParseMode.Default, replyMarkup: new ForceReplyMarkup { Selective = true });
                        }
                        else
                        {
                            MessageData requestMessage = _messageDataService.CreateMessageData(update, this.HttpContext.Request.Host.Value.ToString());
                            // Отправка запроса на API др. сервиса
                            string jsonRequest = JsonSerializer.Serialize(requestMessage);
                            string jsonResponseData = await PostRequestHttpAsync(url, jsonRequest);
                            ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);
 
                            if (!responseData.Status.Equals("NotFound") && responseData.TextMessage != null)
                            {
                                string responseMessageFromDB = responseData.TextMessage;
                                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, responseMessageFromDB);
                            }
                            else
                            {
                                string responseMessageFromDB = "Участник с данным номером телефона не найден!";
                                await _telegramBotClient.SendTextMessageAsync(message.Chat.Id, responseMessageFromDB);
                            }
                        }
                        break;
                }
            }
            else
            {
                await _telegramBotClient.SendTextMessageAsync(message.From.Id, responseMessage, ParseMode.Default, replyMarkup: new ForceReplyMarkup { Selective = true });
            }
        }
 
        return Ok();
    }
    
    // Функция отправки запроса на API др. сервиса 
    [ApiExplorerSettings(IgnoreApi = true)]
    public async Task<string> PostRequestHttpAsync(string url, string json)
    {
         using HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
            HttpClient httpClient = _clientFactory.CreateClient();
            httpClient.Timeout = TimeSpan.FromSeconds(120);
            using HttpResponseMessage response = await httpClient.PostAsync(url, content).ConfigureAwait(false);
 
            return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
    }


Пробовал отправлять на каждый из этих контроллеров обоих сервисов POST запросы через Postman - все отрабатывает норм.
Проверил работает ли 2-ой сервис (бот TLmessenger) отдельно без отправки запросов на основной - работает.
Добавил отправку запросов из бота TLmessenger на основной сервис - TLmessenger перестал работать.

Далее запустил первый (основной) сервис у себя на локально через ngrok, а 2-му (боту TLmessenger) прописал адрес url на который нужно слать запросы на 1-ый, который сформировал ngrok. Залил 2-ой (бота TLmessenger) на хостинг, в итоге TLmessenger сообщения из телеграмма получает, обрабатывает, отправляет POST запрос на основной сервис, основной сервис получает этот запрос отрабатывает и отправляет ответ, но TLmessenger не отвечает, по ходу не может обработать ответ.

Не пойму в чем проблема.

Попробовал запустил первый (основной) сервис у себя на локально через ngrok. 2-ой (бота TLmessenger) запустил в режиме отладки на другом ПК и отправил запрос через swagger, в итоге TLmessenger сообщение из swagger получает, обрабатывает, отправляет POST запрос на основной сервис (запущенный на ngrok), основной сервис получает этот запрос отрабатывает и отправляет ответ, TLmessenger ответ получает, но когда пытается вернуть его
Код: c#
1.
2.
3.
4.
string jsonResponseData = await PostRequestHttpAsync(url, jsonRequest);
                ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);
                string str = responseData.Status;
                return Ok(str);


получаю ошибку:
автор204 Undocumented Response headers date: Thu30 Sep 2021 04:58:28 GMT server: Microsoft-IIS/10.0 x-powered-by: ASP.NET

Когда через отладчик смотрел, что в переменных jsonResponseData, responseData, то он мне показывал, что jsonResponseData

авторНе удается получить значение локальной переменной или аргумента, так как оно недоступно по указателю инструкции, возможно, вследствие оптимизации. string.

Скрины ответа полученного от основного сервиса из отладчика:
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101164
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101170
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
то что красным подсвечивает во время дебага -не обращай пристального внимания - это может быть и при полностью рабочем коде. Скорее всего студия не вычисляет какие-либо ресурсоемкие параметры по умолчанию. Попробуй развернуть два сервиса на Kestrel у себя на машине и протестировать.
Прикрепи exception, который словишь в TLmessenger в try-catch.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101178
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
Vlad__i__mir,
то что красным подсвечивает во время дебага -не обращай пристального внимания - это может быть и при полностью рабочем коде. Скорее всего студия не вычисляет какие-либо ресурсоемкие параметры по умолчанию. Попробуй развернуть два сервиса на Kestrel у себя на машине и протестировать.


Как я разверну 2 сервиса у себя на машине, если Kestrel разворачивает сервисы на 5000 порту, не может же у меня на 1-ом порту быть 2 сервиса?

авторПрикрепи exception, который словишь в TLmessenger в try-catch.

Что нужно обернуть в try-catch?
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101183
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
5000 порт это по умолчанию, можно назначить любой порт. Разворачиваешь один сервис на 5000, другой на 5001 например и настраиваешь роутинг.
Try catch оберни ту секцию кода, в которой происходит Exception.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101227
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub, вот, в строке в которой он пытается десериализовать ответ:
Код: c#
1.
ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);


авторMicrosoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
Failed to determine the https port for redirect.
System.Text.Json.JsonException: 'T' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
---> System.Text.Json.JsonReaderException: 'T' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first)
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonConverter jsonConverter, Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](Utf8JsonReader& reader, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
at TLmessanger.Controllers.TelegramListenerController.Post(Update update) in D:\My_PROGRAMS\TLmessanger\Controllers\TelegramListenerController.cs:line 179

Объект, который отправляется с основного сервиса:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class ResponseMessageData
    {
        [JsonProperty("userName")]
        public string UserName { get; set; }
        [JsonProperty("phoneNumber")]
        public string PhoneNumber { get; set; }
        [JsonProperty("textMessage")]
        public string TextMessage { get; set; }
        [JsonProperty("status")]
        public string Status { get; set; }
        [JsonProperty("byteQrcode")]
        public byte[] ByteQrcode { get; set; }
    }



объект, в которой производится десериализация:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public class ResponseMessageData
    {
        [JsonProperty("userName")]
        public string UserName { get; set; }
        [JsonProperty("phoneNumber")]
        public string PhoneNumber { get; set; }
        [JsonProperty("textMessage")]
        public string TextMessage { get; set; }
        [JsonProperty("status")]
        public string Status { get; set; }
        [JsonProperty("byteQrcode")]
        public byte[] ByteQrcode { get; set; }
    }



они идентичные.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101231
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй убери HTTPS и редирект на него
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101290
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
Попробуй убери HTTPS и редирект на него

У меня в TLmessenger в lanhsettings он был убран:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:35145",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TLmessanger": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}



В Startuo.cs редирект был:
Код: c#
1.
app.UseHttpsRedirection();


Закомментировал его в TLmessanger:
авторSystem.Text.Json.JsonException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
---> System.Text.Json.JsonReaderException: The input does not contain any JSON tokens. Expected the input to start with a valid JSON token, when isFinalBlock is true. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonConverter jsonConverter, Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](Utf8JsonReader& reader, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
at TLmessanger.Controllers.TelegramListenerController.Post(Update update) in D:\My_PROGRAMS\TLmessanger\Controllers\TelegramListenerController.cs:line 179

и ещё мне Kestrel у основного сервиса (куда уходят запросы) пишет предупреждение после запуска:
авторwarn: Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
Failed to determine the https port for redirect.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101304
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован:
Код: c#
1.
2.
3.
4.
5.
6.
7.
"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18246",
      "sslPort": 0
    }
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101353
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя какая-то Middleware как-то модифицирует запрос, тебе нужно раскрутить в сторону упрощения пока не заработает.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101357
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
У тебя какая-то Middleware как-то модифицирует запрос, тебе нужно раскрутить в сторону упрощения пока не заработает.

Что раскрутить, что упростить?
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101523
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован:
Код: c#
1.
2.
3.
4.
5.
6.
7.
"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18246",
      "sslPort": 0
    }



Вы запускаете свой сервис под иисом? Если нет, то смотрите на нижнюю часть конфигурации, там, где http, https
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101645
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин
Vlad__i__mir
ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован:
Код: c#
1.
2.
3.
4.
5.
6.
7.
"iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:18246",
      "sslPort": 0
    }



Вы запускаете свой сервис под иисом? Если нет, то смотрите на нижнюю часть конфигурации, там, где http, https


Да под IIS
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101678
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir,
так запусти под Kestrel-писал же выше.
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101681
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
Vlad__i__mir,
так запусти под Kestrel-писал же выше.


Запустил оба сервиса в Kestral:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Microsoft.AspNetCore.HttpsPolicy.HttpsRedirectionMiddleware[3]
Failed to determine the https port for redirect.
System.Text.Json.JsonException: 'T' is an invalid start of a value. Path: $ | LineNumber: 0 | BytePositionInLine: 0.
---> System.Text.Json.JsonReaderException: 'T' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8Js onReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first)
at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
at System.Text.Json.Utf8JsonReader.Read()
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8 JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
--- End of inner exception stack trace ---
at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, JsonReaderException ex)
at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8 JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](JsonConverter jsonConverter, Utf8JsonReader& reader, JsonSerializerOptions options, ReadStack& state)
at System.Text.Json.JsonSerializer.ReadCore[TValue](Utf8JsonReader& reader, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, Type returnType, JsonSerializerOptions options)
at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
at TLmessanger.Controllers.TelegramListenerController.Post(Upda te update) in D:\My_PROGRAMS\TLmessanger\Controllers\TelegramListenerContr oller.cs:line 179



в строке:
Код: c#
1.
ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);



С основного сервиса у меня уходит ответ следующего вида:
авторresponseMessage {TLmessanger.Models.ResponseMessageData} TLmessanger.Models.ResponseMessageData
ByteQrcode null byte[]
PhoneNumber null string
Status "Not found" string
TextMessage null string
UserName null string
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101689
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vb_sub
Попробуй убери HTTPS и редирект на него
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101773
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vb_sub
vb_sub
Попробуй убери HTTPS и редирект на него


В TLmessanger он у меня уже был отключен, Кестрел он запускался на обычном порту:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:35145",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TLmessanger": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}


Редирект был убран.

Убрал редирект и в основном проекте в итоге TLmessanger при получении ответа от основного сервиса просто стал падать:
автор Overriding address(es) 'http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.

D:\My_PROGRAMS\TLmessanger\bin\Release\net5.0\TLmessanger.exe (процесс 4316) завершил работу с кодом -1.
Чтобы автоматически закрывать консоль при остановке отладки, включите параметр "Сервис" ->"Параметры" ->"Отладка" -> "Автоматически закрыть консоль при остановке отладки".
Нажмите любую клавишу, чтобы закрыть это окно…
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101788
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vlad__i__mir
vb_sub
пропущено...


В TLmessanger он у меня уже был отключен, Кестрел он запускался на обычном порту:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:35145",
      "sslPort": 0
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "TLmessanger": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}


Редирект был убран.

Убрал редирект и в основном проекте в итоге TLmessanger при получении ответа от основного сервиса просто стал падать:
автор Overriding address(es) 'http://localhost:5000'. Binding to endpoints defined in UseKestrel() instead.

D:\My_PROGRAMS\TLmessanger\bin\Release\net5.0\TLmessanger.exe (процесс 4316) завершил работу с кодом -1.
Чтобы автоматически закрывать консоль при остановке отладки, включите параметр "Сервис" ->"Параметры" ->"Отладка" -> "Автоматически закрыть консоль при остановке отладки".
Нажмите любую клавишу, чтобы закрыть это окно…


чудеса какие-то, немного облегчите себе лайф:
"launchBrowser": false,

и потом пальцами пускайте броузер или два
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101801
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ролг Хупин, сделал, оба приложения крутятся на своих портах, отправляю запрос из postman - никакой вообще реакции не в постмане не в консоли, хотя должна была быть по идее. Я же в ответ выдаю поле или печатаю исключение:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 MessageData requestMessage = _messageDataService.CreateMessageData(update, this.HttpContext.Request.Host.Value.ToString());

                    // Отправка запроса на API др. сервиса
                    string jsonRequest = JsonSerializer.Serialize(requestMessage);
                    string str = null;
                    try
                    {
                        string jsonResponseData = await PostRequestHttpAsync(url, jsonRequest);
                        ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);
                        str = responseData.Status;
                    }
                    catch (Exception ex) {
                        Console.WriteLine(ex.ToString());
                    }
                    return Ok(str);



Раньше он хотя бы исключения выдавал
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101826
Vlad__i__mir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ответ он от того сервера получает, вот что приходит:
автор{StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.HttpConnectionResponseContent, Headers:
{
Date: Mon, 04 Oct 2021 12:19:54 GMT
Server: Kestrel
Content-Type: application/json; charset=utf-8
Content-Length: 94
}}

{Method: POST, RequestUri: 'http://localhost:5001/api/TelegramBot/AcceptReplyMessageBot', Version: 1.1, Content: System.Net.Http.StringContent, Headers:
{
traceparent: 00-6b0e10201858614a861c58ec14002130-6f0239a2918be749-00
Content-Type: application/json; charset=utf-8
Content-Length: 166
}}


А в ответ он возвращает NULL (str == null):
Код: c#
1.
2.
3.
string jsonResponseData = await PostRequestHttpAsync(url, jsonRequest);
                        ResponseMessageData responseData = JsonSerializer.Deserialize<ResponseMessageData>(jsonResponseData);
                        str = responseData.Status;
...
Рейтинг: 0 / 0
Ошибка обработки POST запроса между сервисами
    #40101980
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выложи репозиторий что ли, чтобы можно было у себя можно было воспроизвести.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Ошибка обработки POST запроса между сервисами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (0):
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]