我的代码使用:
WebAuthenticationResult WebAuthenticationResult = await
WebAuthenticationBroker.AuthenticateAsync(
WebAuthenticationOptions.None,
StartUri,
EndUri);
就像Microsoft Web authentication broker sample
一样它曾经在我的桌面和我的平板电脑(Surface)上工作,但现在它无法在我的桌面上运行。它抛出异常
The process terminated unexpectedly. (Exception from HRESULT: 0x8007042B)
它适用于平板电脑和不同的Windows-8桌面。
任何可能导致此异常的建议?
答案 0 :(得分:0)
我不确定,但我认为WebAuthBroker需要在UI线程上调用,因为它试图通过向您显示弹出窗口来改变您的UI。
答案 1 :(得分:0)
WebAuthenticationBroker.AuthenticateAsync作为应用程序进程的子进程启动AuthHost.exe进程,异常返回的HRESULT表示AuthHost.exe意外失败。启动时,AuthHost尝试从非sso容器中清除cookie,内容和历史记录,如果失败,则会退出。另一方面,Windows应用程序在沙箱中运行,其中一组权限与桌面应用程序不同。因此,Internet Explorer本身或执行SSO的桌面应用程序可能能够正常工作,但不允许AuthHost在启动时进行必要的清理。就我而言,运行应用程序的用户是被授予对该文件夹的完全访问权限的组的一部分,但用户本身没有直接文件访问权限。但是,组权限在应用程序沙箱中被删除。 在默认设置中,权限配置正确,不会出现此类问题。但是,在一些情况下,用户将Temporary Internet Files移动到新位置,该位置可能具有稍微不同的文件访问权限集。此线程上的其他响应表明删除和重新创建配置文件会有所帮助。此操作将Internet Explorer中的Internet临时文件设置重置为默认值,间接支持我的建议。