|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Здравствуйте! Есть сервис расположенный по адресу 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.
Есть другой микро сервис по адресу 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.
Пробовал отправлять на каждый из этих контроллеров обоих сервисов 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.
получаю ошибку: автор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. Скрины ответа полученного от основного сервиса из отладчика: ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:28 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 07:29 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Vlad__i__mir, то что красным подсвечивает во время дебага -не обращай пристального внимания - это может быть и при полностью рабочем коде. Скорее всего студия не вычисляет какие-либо ресурсоемкие параметры по умолчанию. Попробуй развернуть два сервиса на Kestrel у себя на машине и протестировать. Прикрепи exception, который словишь в TLmessenger в try-catch. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 08:11 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
vb_sub Vlad__i__mir, то что красным подсвечивает во время дебага -не обращай пристального внимания - это может быть и при полностью рабочем коде. Скорее всего студия не вычисляет какие-либо ресурсоемкие параметры по умолчанию. Попробуй развернуть два сервиса на Kestrel у себя на машине и протестировать. Как я разверну 2 сервиса у себя на машине, если Kestrel разворачивает сервисы на 5000 порту, не может же у меня на 1-ом порту быть 2 сервиса? авторПрикрепи exception, который словишь в TLmessenger в try-catch. Что нужно обернуть в try-catch? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 08:58 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Vlad__i__mir, 5000 порт это по умолчанию, можно назначить любой порт. Разворачиваешь один сервис на 5000, другой на 5001 например и настраиваешь роутинг. Try catch оберни ту секцию кода, в которой происходит Exception. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 09:16 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
vb_sub, вот, в строке в которой он пытается десериализовать ответ: Код: c# 1.
автор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.
объект, в которой производится десериализация: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
они идентичные. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 10:50 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Попробуй убери HTTPS и редирект на него ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 10:57 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
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.
В Startuo.cs редирект был: Код: c# 1.
Закомментировал его в 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. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 12:55 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован: Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 13:13 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
У тебя какая-то Middleware как-то модифицирует запрос, тебе нужно раскрутить в сторону упрощения пока не заработает. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 14:59 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
vb_sub У тебя какая-то Middleware как-то модифицирует запрос, тебе нужно раскрутить в сторону упрощения пока не заработает. Что раскрутить, что упростить? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2021, 15:02 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Vlad__i__mir ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован: Код: c# 1. 2. 3. 4. 5. 6. 7.
Вы запускаете свой сервис под иисом? Если нет, то смотрите на нижнюю часть конфигурации, там, где http, https ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2021, 13:02 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Ролг Хупин Vlad__i__mir ну пишет он так наверное, потому что у меня на основном сервисе https порт тоже заблокирован: Код: c# 1. 2. 3. 4. 5. 6. 7.
Вы запускаете свой сервис под иисом? Если нет, то смотрите на нижнюю часть конфигурации, там, где http, https Да под IIS ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2021, 21:02 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Vlad__i__mir, так запусти под Kestrel-писал же выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 08:40 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
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.
в строке: Код: c# 1.
С основного сервиса у меня уходит ответ следующего вида: авторresponseMessage {TLmessanger.Models.ResponseMessageData} TLmessanger.Models.ResponseMessageData ByteQrcode null byte[] PhoneNumber null string Status "Not found" string TextMessage null string UserName null string ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 08:46 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
vb_sub Попробуй убери HTTPS и редирект на него ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 09:43 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
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.
Редирект был убран. Убрал редирект и в основном проекте в итоге 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. Чтобы автоматически закрывать консоль при остановке отладки, включите параметр "Сервис" ->"Параметры" ->"Отладка" -> "Автоматически закрыть консоль при остановке отладки". Нажмите любую клавишу, чтобы закрыть это окно… ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 13:12 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
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.
Редирект был убран. Убрал редирект и в основном проекте в итоге 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, и потом пальцами пускайте броузер или два ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 13:37 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
Ролг Хупин, сделал, оба приложения крутятся на своих портах, отправляю запрос из postman - никакой вообще реакции не в постмане не в консоли, хотя должна была быть по идее. Я же в ответ выдаю поле или печатаю исключение: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Раньше он хотя бы исключения выдавал ... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 14:08 |
|
Ошибка обработки POST запроса между сервисами
|
|||
---|---|---|---|
#18+
ответ он от того сервера получает, вот что приходит: автор{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.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.10.2021, 15:29 |
|
|
Start [/forum/topic.php?fid=19&msg=40101231&tid=1396630]: |
0ms |
get settings: |
20ms |
get forum list: |
22ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
16ms |
get forum data: |
3ms |
get page messages: |
465ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 612ms |
0 / 0 |