2017-12-27 26 views
4

BotAuth nuget 패키지를 사용하고 있습니다. 최근에 나는 https://docs.microsoft.com/en-us/bot-framework/dotnet/bot-builder-dotnet-state-azure-table-storage에 언급 된 단계에 따라 봇의 상태 데이터를 저장하고 관리하기 위해 Azure 테이블 저장소를 구현했습니다.Azure 테이블 저장소의 BotAuth에 오류가 발생했습니다.

내 Global.asax.cs 파일은 다음과 같다 :

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

그리고 MessagesController는 봇 템플릿의 것과 동일합니다 : 그것을 밖으로 테스트에, 나는 얻을

[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) 
    { ...... } 
} 

지금 로그인 카드를 예상대로 클릭하고 승인 절차를 완료 한 후 브라우저에서 다음 오류가 발생합니다.

{ 
"message": "An error has occurred.", 
"exceptionMessage": "Object reference not set to an instance of an object.", 
"exceptionType": "System.NullReferenceException", 
"stackTrace": " at BotAuth.AADv1.ADALAuthProvider.<GetTokenByAuthCodeAsync>d__4.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()\r\n at BotAuth.Controllers.CallbackController.<Callback>d__3.MoveNext()" 
} 

정확히 무엇이 누락 되었습니까? autofac 모듈 등록입니다. 누구든지이 작업 샘플을 가지고 있습니까?

+0

당신은뿐만 아니라 메시지 컨트롤러를 게시하시기 바랍니다 수이 하나를 사용하는 것이 바람직, MicrosoftDX/botauth 수정되었습니다? – JasonSowers

+0

@JasonSowers가 추가되었습니다. 메시지 컨트롤러는 봇 초기 템플릿과 동일합니다. 나는 그것에 변화를주지 않았다. –

+0

github에서 [이 문제 : "*** 사용자 정의 상태 서비스를 사용하면 인증 실패가 발생합니다 ***"] (https://github.com/richdizz/BotAuth/issues/8), weshackett의 의견을 참조 할 수 있습니다. 구성한 데이터 저장소를 사용하도록'CallBack controller '를 수정하십시오. –

답변