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 모듈 등록입니다. 누구든지이 작업 샘플을 가지고 있습니까?
당신은뿐만 아니라 메시지 컨트롤러를 게시하시기 바랍니다 수이 하나를 사용하는 것이 바람직, MicrosoftDX/botauth 수정되었습니다? – JasonSowers
@JasonSowers가 추가되었습니다. 메시지 컨트롤러는 봇 초기 템플릿과 동일합니다. 나는 그것에 변화를주지 않았다. –
github에서 [이 문제 : "*** 사용자 정의 상태 서비스를 사용하면 인증 실패가 발생합니다 ***"] (https://github.com/richdizz/BotAuth/issues/8), weshackett의 의견을 참조 할 수 있습니다. 구성한 데이터 저장소를 사용하도록'CallBack controller '를 수정하십시오. –