Ich habe versucht, einen Dienst an einen LuisDialog von der Nachrichtensteuerung wie folgt zu übergeben:
%Vor%Der botService wird in den MessageController unter Verwendung der Abhängigkeitsinjektion eingefügt.
Wenn ich eine Bot-Konversation starte, erhalte ich einen Fehler:
Geben Sie 'ThetaBot.Services.BotService' in Assembly ein 'ThetaBot.Services, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' ist nicht als serialisierbar gekennzeichnet.
Auf der Suche nach einer Lösung kann ich finden: Ссылка
%Vor%Ich verstehe Ihre Frage jetzt besser. Wir haben ein ähnliches Problem mit Serviceobjekten, die wir aus dem Container und nicht aus dem serialisierten Blob instanziieren möchten. So registrieren wir diese Objekte im Container - wir wenden eine spezielle Behandlung während der Deserialisierung für alle Objekte mit dem Schlüssel Key_DoNotSerialize an:
Ich kann jedoch kein Beispiel oder eine Dokumentation finden, die Details darüber beschreibt, wie Sie Ihre eigenen Abhängigkeiten in den vorhandenen Bot-Framework-Modulen registrieren.
Ich fand auch Ссылка , was anzeigt, dass es möglich sein sollte, die Dialoge aus dem Container zu instanziieren.
Ich habe diesen Vorschlag ausprobiert:
%Vor%Zusammen mit:
%Vor%Das funktioniert nicht.
Ich habe es auch versucht:
%Vor%Zusammen mit den folgenden im ApplicationModule:
%Vor%Das funktioniert nicht und ich stoße auf dasselbe Problem.
Wenn ich einfach alle Dienste und ihre Abhängigkeiten als serialisierbar markieren, kann ich das ohne die Notwendigkeit, FiberModule.Key_DoNotSerialize zu benutzen, funktionieren lassen.
Die Frage ist - was ist der richtige / bevorzugte / empfohlene Weg, Abhängigkeiten in Bot Framework Dialoge zu registrieren und zu injizieren?
In der Datei Global.asax.cs können Sie Folgendes tun, um Ihre Dienste / Dialoge zu registrieren:
%Vor%In Ihrem Controller können Sie dann Ihren Hauptdialog wie folgt auflösen:
%Vor%Tags und Links c# autofac botframework