2016-05-17 6 views
5

Ich versuche, den iDialog Fluss mit einer gefälschten Nachricht zu testen, so:Microsoft.Rest.HttpOperationException in Microsoft.Bot.Builder.dll ("Zugriff verweigert"), während PromptDialog.Confirm Prüfung

 var toBot = new Message() 
     { 
      ConversationId = Guid.NewGuid().ToString(), 
      Text = "Test", 
     }; 

     Func<IDialog<T>> MakeRoot =() => testDialog; 
     toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 
     toBot.To = new ChannelAccount(Guid.NewGuid().ToString()); 

Wenn Wenn es den PromptDialog.Confirm trifft, wird die Ausnahme "Microsoft.Rest.HttpOperationException in Microsoft.Bot.Builder.dll (" Zugriff verweigert ") ausgelöst.

Wenn ich nicht schaffen

 toBot.From = new ChannelAccount(Guid.NewGuid().ToString()); 

es wirft System.NullReferenceException für KanalId.

PromptDialog.Confirm sieht aus wie:

PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
       Strings.InvalidInput); 

Wie kann ich dieses Problem umgehen?

Antwort

2

Das Problem wurde dadurch verursacht:

await context.PostAsync(replyMessage); 
    PromptDialog.Confirm(context, AfterErrorConfirmationAsync, Strings.ConfirmError, 
      Strings.InvalidInput); 

nach der Ausnahme eine Nachricht an den Benutzer veröffentlichen und anschließend Testfehler verursacht Dialog sofort bestätigen zu müssen. Diese Ausnahme wurde jedoch während der Laufzeit nicht ausgelöst.

aufgelöst ich das oben genannte Problem durch die Antwortnachricht mit der Bestätigung String Kombination wie folgt:

offen
PromptDialog.Confirm(context, AfterErrorProcessingAsync, replyMessage + "\n\n" + Strings.ConfirmError, 
       Strings.InvalidInput); 

verlassen diese Frage, wenn jemand eine bessere Abhilfe hat.