c# - ADAL AcquireTokenAsync 不想要父窗口
问题描述
我想将 Azure AD 身份验证添加到我的桌面应用程序,因此我有一个可用于 Web API 的 OAuth2 访问令牌。身份验证本身正在工作,我的问题是parentWindow
. 只要身份验证窗口可见,我不希望我的表单可访问/可单击。但是每次我将我的主要形式指定为parentWindow
时,我都会收到一条InvalidOperationException
消息:
跨线程操作无效:控件“FormMain”从创建它的线程以外的线程访问。
如果我只指定表单的句柄作为parentWindow
参数(它只需要一个object
),它会显示“BrowserAuthenticationWindow”而不是“FormMain”,但错误是相同的。这是发生错误的代码行:
var token = await authContext.AcquireTokenAsync(
resourceUri, ClientId, new Uri(redirectUri),
new PlatformParameters(PromptBehavior.Auto, parentWindow));
// also doesn't work: parentWindow.Handle
我也试图通过使用来避免错误InvokeRequired
,但它没有用。
任何想法如何解决这个问题?
解决方案
在这一点上,我认为这是 3.18 版中引入的 Microsoft.IdentityModel.Clients.ActiveDirectory nuget 中的一个错误,并将在他们的 GitHub 存储库上打开一个问题。如果您可以降级到版本 3.17.3,您将看到相同的代码可以工作,并且没有抛出跨线程异常。
推荐阅读
- python - 找不到烧瓶 404
- ruby-on-rails - ActiveRecord::NoDatabaseError: FATAL: 数据库“aquastarsbackend_development”不存在
- javascript - 类型 Map 的好名字是什么
,T>? - amazon-web-services - Kubernetes多节点集群cpu不足
- flutter - 隐藏 SliverAppBar 时隐藏设备状态栏
- lilypond - 用 Lilypond 连接“[”条线
- swift - 我可以从 Xcode 自动完成中判断参数标签是否是可选的吗?
- database - Couchbase 5.1 N1QL OR 运算符不使用索引
- powershell - Powershell替换文本字符串
- api - Google Analytics API (v4) - 我怎样才能得到 pagePath 或 url 作为响应?目前只获取 pageTitle 和综合浏览量