该应用程序已经运行了好几个月,但昨天我的开发计算机有问题(秋季创建者更新)所以检查了我的笔记本电脑上的代码并开始工作。但是现在我遇到的问题是应用程序没有将令牌写入缓存数据库。添加一些断点到
void BeforeAccessNotification(TokenCacheNotificationArgs args)
void AfterAccessNotification(TokenCacheNotificationArgs args)
void BeforeWriteNotification(TokenCacheNotificationArgs args)
方法我可以看到它们永远不会被击中。我的代码与此处的示例代码相同(第14行除外,名称不同)
我的Startup.Auth.cs与下面相同(我复制并粘贴到测试中)
我有另一个使用几乎完全相同的身份验证的应用程序,它工作正常,我可以在Startup.Auth中看到它点击这一行
AuthenticationResult result = await
authContext.AcquireTokenByAuthorizationCodeAsync(
context.Code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, ConfigHelper.GraphResourceId);
然后它运行BeforeAccessNotification,BeforeWriteNotification,AfterAccessNotification并且运行良好。
但是在非工作应用程序中,即使一切看起来都应该如此,它也不会运行上述方法。
有什么想法吗?我完全失去了。
答案 0 :(得分:0)
感谢您的回复,问题变成了关键=" ida:GraphUrl"在我的web.config被删除(不知道如何)所以" ConfigHelper.GraphResourceId"在
AuthenticationResult result = await
authContext.AcquireTokenByAuthorizationCodeAsync(
context.Code, new Uri(HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Path)), credential, ConfigHelper.GraphResourceId);
是null,因为我假设
而忽略了它catch (AdalException ex)
会抓住这个。