Ich verwende BotAuth nuget-Paket, um Benutzer auf meinem Bot einzuloggen. Kürzlich habe ich Azure Table-Speicher implementiert, um Bot-Zustandsdaten zu speichern und zu verwalten, indem ich die in https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-state-azure-table-storage erwähnten Schritte befolge.Fehler bei BotAuth mit Azure-Tabellenspeicher
Meine Global.asax.cs Datei sieht wie folgt aus:
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
var store = new TableBotDataStore(CloudStorageAccount.DevelopmentStorageAccount);
Conversation.UpdateContainer(builder =>
{
builder.Register(c => store)
.Keyed<IBotDataStore<BotData>>(AzureModule.Key_DataStore)
.AsSelf()
.SingleInstance();
builder.Register(c => new CachingBotDataStore(store,
CachingBotDataStoreConsistencyPolicy
.ETagBasedConsistency))
.As<IBotDataStore<BotData>>()
.AsSelf()
.InstancePerLifetimeScope();
});
GlobalConfiguration.Configure(WebApiConfig.Register);
}
}
Und MessagesController ist dieselbe wie die in der Bot-Vorlage:
[BotAuthentication]
public class MessagesController : ApiController
{
/// <summary>
/// POST: api/Messages
/// Receive a message from a user and reply to it
/// </summary>
public async Task<HttpResponseMessage> Post([FromBody]Activity activity)
{
if (activity.Type == ActivityTypes.Message)
{
await Conversation.SendAsync(activity,() => new Dialogs.RootDialog());
}
else
{
HandleSystemMessage(activity);
}
var response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
private Activity HandleSystemMessage(Activity message)
{ ...... }
}
Nun, es auf die Erprobung, ich die Anmelde-Karte wie erwartet und nach dem Klicken und Beenden des Autorisierungsprozesses, bekomme ich den folgenden Fehler im Browser:
Was genau fehlt mir? Ist es eine Autofac-Modul-Registrierung? Hat jemand eine funktionierende Probe dafür?
Können Sie bitte auch Ihre Nachrichten Controller posten? – JasonSowers
Hinzugefügt es @JasonSowers. Der Nachrichten-Controller ist derselbe wie in der Bot-Initial-Vorlage. Ich habe daran nichts geändert. –
Ich finde [dieses Problem: "*** Die Aktivierung des benutzerdefinierten Zustandsdienstes verursacht einen Authentifizierungsfehler ***"] (https://github.com/richdizz/BotAuth/issues/8) auf github, Sie können sich auf den Kommentar von weshackett beziehen und Versuchen Sie, den CallBack-Controller zu ändern, um den von Ihnen konfigurierten Datenspeicher zu verwenden. –