1

Ich habe ein Problem bei der Einrichtung einer Konsolenanwendung, die Push-Benachrichtigungen an iOS/Android-Geräte sendet.Azure Notification Hub-Fehler 401

Fehler gezeigt ist unten:

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 

Hier ist mein Code für die Konsolenanwendung ist:

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"); 
} 

Wenn jemand mir eine Hand mit diesem geben könnte, es wäre toll.

+0

Können Sie überprüfen, ob Ihr API-Schlüssel ein Serverschlüssel ist? Siehe mein [hier antworten] (http://stackoverflow.com/a/37801206/4625829). –

+0

Sie sehen, dass ich meine Anwendung in Azure getestet habe, indem ich dort die Test-Push-Benachrichtigungsfunktion verwendet habe und meine App Benachrichtigungen erhält, aber wenn ich versuchte, dasselbe in meiner Konsolenanwendung (Server) zu implementieren, gibt es nur diesen Fehler. – ADuggan

+0

Ich habe es gerade überprüft und es scheint, dass ich bereits den Serverschlüssel verwende. – ADuggan

Antwort

4

Es sieht so aus, als ob Sie die DefaultListenSharedAccessSignature; Verwenden Sie stattdessen die DefaultFullSharedAccessSignature.