单元测试项目在实例 IPublicClientApplication 的 AcquireTokenInteractive 方法上崩溃
Posted
技术标签:
【中文标题】单元测试项目在实例 IPublicClientApplication 的 AcquireTokenInteractive 方法上崩溃【英文标题】:Unit Test project crashes on method AcquireTokenInteractive for instance IPublicClientApplication 【发布时间】:2022-01-09 21:09:46 【问题描述】:我正在将一个单元测试项目从 netcore3.0 迁移到 net6.0。在 Visual Studio 中调试时,我在调用 IPublicClientApplication 实例的 AcquireTokenInteractive 方法时遇到了问题。
这是截取的代码:
IPublicClientApplication PublicClientApp = PublicClientApplicationBuilder.Create(azureADAppSettings.ApplicationID)
.WithTenantId(azureADAppSettings.TenantID)
.WithAuthority(AzureCloudInstance.AzurePublic, tenantName)
.WithRedirectUri(redirectUri)
.Build();
result = await PublicClientApp.AcquireTokenInteractive(scopes).ExecuteAsync();
方法开始执行,登录页面在浏览器中打开,我登录并在浏览器中收到此消息:
身份验证完成。您可以返回应用程序。随意 关闭此浏览器选项卡。
消息在浏览器中显示后,Visual Studio 不返回AcquireTokenInteractive 方法,Visual Studio 停止调试,错误列表中没有错误消息。在输出中我发现了两个异常。
第一个是:Exception throw: 'Azure.RequestFailedException' in System.Private.CoreLib.dll
第二个错误是:Exception throw: 'Microsoft.Identity.Client.MsalServiceException' in System.Private.CoreLib.dll
我已根据第二条错误消息对我在门户 Azure 中的应用注册进行了一些更改。我将缺少的重定向 uri 添加到应用注册并将应用设置为公共客户端类型。
在我在门户 Azure 上的应用注册中进行更改后,第二个错误仍然存在。
有人知道我可以采取哪些措施来解决错误消息并接收令牌吗?
【问题讨论】:
你可以在 GitHub 上打开一个问题:microsoft-authentication-library-for-dotnet 我按照你的建议做了。 【参考方案1】:错误是Exception thrown: 'Microsoft.Identity.Client.MsalServiceException' in System.Private.CoreLib.dll
谢谢chigivigi。根据下面的 GitHub 评论,您的问题已解决。在此处发布作为答案,以帮助可能面临类似问题的其他社区成员。
问题是 redirectUri 没有添加为本机 url,而是添加为 web URL。
可以参考GitHub issue:Unit Test project crashes on method AcquireTokenInteractive for instance IPublicClientApplication
【讨论】:
【参考方案2】:问题是 redirectUri 没有添加为本机 url,而是添加为 web URL。
【讨论】:
以上是关于单元测试项目在实例 IPublicClientApplication 的 AcquireTokenInteractive 方法上崩溃的主要内容,如果未能解决你的问题,请参考以下文章