2017-06-13 7 views
0

Auth botを使用しています。そして、ボットフレームワークを3.8.1にアップグレードした後、次の例外が発生しています私たちのボットにログインしようとしたとき:フィールドが見つかりません:bot framewotkにアップグレードするときに 'Microsoft.Bot.Builder.Dialogs.Conversation.Container' 3.8.1

<Error> 
<Message>An error has occurred.</Message> 
<ExceptionMessage> 
Field not found: 'Microsoft.Bot.Builder.Dialogs.Conversation.Container'. 
</ExceptionMessage> 
<ExceptionType>System.MissingFieldException</ExceptionType> 
<StackTrace> 
at AuthBot.Controllers.OAuthCallbackController.<OAuthCallback>d__3.MoveNext() at System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1.Start[TStateMachine](TStateMachine& stateMachine) at AuthBot.Controllers.OAuthCallbackController.OAuthCallback(String code, String state, CancellationToken cancellationToken) at lambda_method(Closure , Object , Object[]) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass12.<GetExecutor>b__8(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken) --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__0.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__2.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__1.MoveNext() 
</StackTrace> 
</Error> 

を私たちはConversation.Containerを追加する必要がどこどこかでなければなりませんが推測するが、どこか分かりません。ここで

は、我々が持っているいくつかの関連するコードです:

public class CustomModule : Module 
    { 
     /// <summary> 
     /// Allows adding custom registrations to the container builder. 
     /// In this case we are adding the CustomPostToUser registration. 
     /// </summary> 
     protected override void Load(ContainerBuilder builder) 
     { 
      Ensure.ArgIsNotNull(builder, nameof(builder)); 

      builder.RegisterType<CustomPostToUser>().Keyed<IPostToBot>(typeof(CustomPostToUser)).InstancePerLifetimeScope(); 
      builder.RegisterAdapterChain<IPostToBot> 
      (
       typeof(EventLoopDialogTask), 
       typeof(SetAmbientThreadCulture), 
       typeof(PersistentDialogTask), 
       typeof(ExceptionTranslationDialogTask), 
       typeof(SerializeByConversation), 
       typeof(CustomPostToUser), 
       typeof(LogPostToBot) 
      ) 
      .InstancePerLifetimeScope(); 
     } 

     /// <summary> 
     /// Registers the given adapter chain to the container builder. 
     /// </summary> 
     public static IRegistrationBuilder<TLimit, SimpleActivatorData, SingleRegistrationStyle> RegisterAdapterChain<TLimit>(ContainerBuilder builder, params Type[] types) 
     { 
      Ensure.ArgIsNotNull(builder, nameof(builder)); 

      return 
       builder 
       .Register(c => 
       { 
        var service = default(TLimit); 
        return types.Aggregate(service, (current, t) => c.ResolveKeyed<TLimit>(t, TypedParameter.From(current))); 
       }) 
       .As<TLimit>(); 
     } 
    } 

    static MessagesController() 
    { 

     Conversation.UpdateContainer(builder => 
     { 
      builder.RegisterType<MessageActivityLogger>().AsImplementedInterfaces().InstancePerDependency(); 
      builder.RegisterModule(new ReflectionSurrogateModule()); 
      builder.RegisterModule(new CustomModule()); 
     }); 

    } 
+1

ラビット、あなたがコンテナにアイテムを登録する方法は変です。あなたはUpdateが廃止されたのでInokeMemberを使用していますか? Conversation.UpdateContainerを使用し、ラムダをパラメータとして渡すことを検討してください。それが助けられた場合私に教えてください –

+0

答えをありがとう、unfortunatelly私はまだ認証をクリックすると同じ例外が発生します。たぶん私はいくつかのモジュール登録がありませんか? –

+0

あなたは更新されたコードを投稿できますか?なぜあなたは再びアダプターチェーンを登録していますか? –

答えて

0

は解決策を見つけ、authbotライブラリは、新しいボットフレームワークのバージョンで動作するための認証のために更新する必要があるため、これが起こっているようです。

関連する問題