Ошибка центра уведомлений Azure 401
У меня возникли некоторые проблемы при настройке консольного приложения, которое будет отправлять push-уведомления на устройства iOS/Android.
Показанная ошибка ниже:
Unhandled Exception: System.AggregateException: One or more errors
occurred. ---System.UnauthorizedAccessException: The remote server
returned an error: (401)
Unauthorized..TrackingId:ea158550-8761-41f8-821d-dbcb88fcce56,TimeStamp:18/07/2016
08:58:21 ---System.Net.WebException: The remote server returned an
error: (401) Unauthorized. at
System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at
Microsoft.Azure.NotificationHubs.NotificationRequestAsyncResult`1.<GetAsyncSteps>b__3(TAsyncResult
thisPtr, IAsyncResult r) at
Microsoft.Azure.NotificationHubs.Messaging.IteratorAsyncResult`1.StepCallback(IAsyncResult
result) --- End of inner exception stack trace ---
Server stack trace:
Exception rethrown at [0]: at
Microsoft.Azure.NotificationHubs.Common.AsyncResult.End[TAsyncResult](IAsyncResult
result) at
Microsoft.Azure.NotificationHubs.NotificationHubManager.EndSendNotification(IAsyncResult
result) at
System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult
iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean
requiresSynchronization) --- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean
includeTaskCanceledExceptions) at
System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout,
CancellationToken cancellationToken) at
System.Threading.Tasks.Task.Wait() at
XamarinAzurePushNotification.Server.Program.Main(String[] args) in
B:\Personal Development\Visual Studio
2015\AzurePushNotifications\XamarinAzurePushNotification.Server\Program.cs:line
26
Вот мой код для консольного приложения:
private static void Main(string[] args)
{
var hub = NotificationHubClient.CreateClientFromConnectionString("Endpoint=sb://ConnectionStringName.servicebus.windows.net/;SharedAccessKeyName=DefaultListenSharedAccessSignature;SharedAccessKey=ConnectionStringKey", "HubName");
var iOS_alert = "{\"aps\":{\"alert\":\"Hello. This is a iOS notification! Tada!\", \"sound\":\"default\"}}";
hub.SendAppleNativeNotificationAsync(iOS_alert).Wait();
var android_alert = "{\"message\": \"Can I interest you in a once in a lifetime push notification?!\", \"title\":\"Ding, dong!\"}";
hub.SendGcmNativeNotificationAsync(android_alert).Wait();
Console.WriteLine("MESSAGE SENT");
}
Если бы кто-нибудь мог помочь мне с этим, было бы здорово.
2 ответа
Похоже, вы используете DefaultListenSharedAccessSignature
; вместо этого используйте DefaultFullSharedAccessSignature
,
Если какой-либо из приведенных выше ответов не сработал, проверьте, правильно ли настроен сервер / ПК. В моем случае на клиенте у сервера были неправильные настройки даты и времени, и я получил ошибку:
Код ошибки: 0x17
System.AggregateException: произошла одна или несколько ошибок. ---> System.UnauthorizedAccessException: удаленный сервер возвратил ошибку: (401) Unauthorized. ExpiredToken: .TrackingId:4c2cdbg3-e1a8-4240-b963-d6f55e8f2c76_G29,TimeStamp: 23.08.2008 8:58:27 ---> System.Net.WebException: удаленный сервер возвратил ошибку: (401) не авторизован. в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) в Microsoft.Azure.NotificationHubs.NotificationRequestAsyncResult1.<>c.<GetAsyncSteps>b__26_3(TAsyncResult thisPtr, IAsyncResult r)
at Microsoft.Azure.NotificationHubs.Messaging.IteratorAsyncResult
1.StepCallback (результат IAsyncResult)
--- конец трассировки стека внутренних исключений ---
Очень расстраивает, пока не нашел проблему.