Українська
Типові помилки
Типові помилки
У табл. 11.2 наведено помилки, які найчастіше трапляються під час розробки застосунків SignalR.
Таблиця 11.2. Типові помилки в застосунках SignalR
| Проблема | Причина | Виправлення |
|---|---|---|
| клієнт не отримує повідомлень, помилок немає | ім’я в On не збігається з іменем у SendAsync; обробник зареєстровано після StartAsync | строго типізований хаб, реєстрація On до StartAsync |
| дані користувачів «зникають» між викликами | стан зберігається в полях хабу | служба-одинак із потокобезпечною колекцією |
InvalidOperationException: Cross-thread operation not valid | обробник On змінює форму з потоку пулу | InvokeAsync або BeginInvoke форми |
| клієнт отримує An unexpected error occurred invoking… без подробиць | звичайний виняток у методі хабу | HubException для помилок, призначених клієнту |
| програма аварійно завершується під час запуску | сервер недоступний, StartAsync без try/catch | обробити HttpRequestException, повторити спробу |
| після перепідключення не надходять повідомлення групи | нове підключення не входить до груп | повторно приєднатися до груп у події Reconnected |
| усі клієнти «зависають», поки виконується один метод | блокуючий виклик (Thread.Sleep, .Result) у хабі | асинхронні методи з await, тривала робота – у фоновій службі |
| з MessagePack обробник не викликається | тип повідомлення не public | оголосити запис як public |