Android-приложение .NET MAUI не регистрируется для push-уведомленийAndroid

Форум для тех, кто программирует под Android
Anonymous
Android-приложение .NET MAUI не регистрируется для push-уведомлений

Сообщение Anonymous »

Я следую инструкциям на странице https://learn.microsoft.com/en-us/dotne ... -maui-10.0, чтобы настроить Android-приложение .Net MAUI для получения push-уведомлений. Я считаю, что выполнил все шаги, описанные в статье, в точности (во всяком случае, для всех частей Android я пропустил IOS), однако, когда я нажимаю кнопку «Зарегистрировать» в демонстрационном приложении, я получаю сообщение об ошибке в приложении следующим образом:

"Произошла одна или несколько ошибок. (Код состояния ответа не указывает на успех: 422 (Необрабатываемый объект).)"

Если я прослежу журналы в приложении API, работающем в Azure, я увижу соответствующую ошибку.

2026-05-02 14:51:56.203 +00:00 [Trace] Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker: выполнение метода действия PushNotificationsAPI.Controllers.NotificationsController.UpdateInstallation (PushNotificationsAPI) с аргументами (PushNotificationsAPI.Models.DeviceInstallation)Подробная ошибка IIS — 422.0 — необрабатываемый объектОшибка HTTP 422.0 – необрабатываемый объект

Пользовательский модуль ошибок не распознает эту ошибку.

Наиболее вероятные причины:

  • Модуль установил редко используемый код состояния.

Что можно попробовать:

[*]Выясните, почему модуль установил код состояния.

Подробная информация об ошибке:

Модуль   AspNetCoreModuleV2Уведомление   ExecuteRequestHandlerHandler   aspNetCoreОшибка Код   0x00000000Запрошено URL   https://push-test-notify:80/api/notific ... Физический путь   C:\home\site\wwwroot\api\notifications\installationsВход Метод   АнонимныйВход пользователя   Анонимный

Дополнительная информация:

Любой модуль может вызывать SetStatus со статусом, подстатусом или HRESULT. Пользовательский модуль ошибок отображает сообщения об ошибках, специфичные для состояния, только для хорошо известных ошибок.Просмотреть дополнительную информацию »База знаний Microsoft Статьи:

При установке точек останова в коде я вижу, что в этом блоке кода возвращается 422:

Код: Выделить всё

public async Task RegisterDeviceAsync(params string[] tags)
{
var deviceInstallation = DeviceInstallationService?.GetDeviceInstallation(tags);

await SendAsync(HttpMethod.Put, RequestUrl, deviceInstallation)
.ConfigureAwait(false);

await SecureStorage.SetAsync(CachedDeviceTokenKey, deviceInstallation.PushChannel)
.ConfigureAwait(false);

await SecureStorage.SetAsync(CachedTagsKey, JsonSerializer.Serialize(tags));
}
при этом виновником является следующее:

Код: Выделить всё

var deviceInstallation = DeviceInstallationService?.GetDeviceInstallation(tags);
Я тщательно поискал в Google результат и попытался использовать Github Copilot, чтобы попытаться устранить ошибку, но я действительно не уверен, почему я получаю сообщение об ошибке 422.
К вашему сведению - не уверен, является ли это причиной или нет, но я использую эмулятор Android для тестирования этого приложения.
Может ли кто-нибудь увидеть, что я делаю неправильно? здесь?

Вернуться в «Android»