我有一个针对.NET 2.0的Windows窗体应用程序.我正在尝试通过SAML 2.0协议添加单点登录功能,其中最有效的表观解决方案是嵌入式Web浏览器.
我已经使用一个虚拟应用程序进行了验证,该应用程序仅包含NTLM交换确实发生的WebBrowser控件.但是,当我将相同的控件嵌入到更大的应用程序中时,浏览器不会响应初始的HTTP 401挑战,而是重定向到IE的“导航已取消”页面.
谷歌还没有出现,我对这种行为感到困惑.任何人都可以对可能阻碍WebBrowser凭据协商的内容有所了解吗?
解决方法:
我在(工作)测试应用程序和(不工作)完整应用程序之间的逐行比较中发现了答案.
为我启用NTLM协商的关键是将ScriptErrorsSuppressed设置为false.我本来打算隐藏我们用户的Javascript错误弹出窗口,但是抑制它们也会抑制凭据协商.去搞清楚.