使用EWS委托认证的.NET应用出现“浏览器不支持”错误求助
解决EWS委托认证后出现「浏览器不受支持」错误的方案
问题根源
弹出的登录窗口使用了.NET框架默认的过时浏览器内核(如基于IE的WebBrowser控件),微软的认证页面会将这类内核识别为不支持的浏览器,因此即使登录成功也会触发错误提示。
具体解决步骤
替换Web认证控件为WebView2
放弃使用System.Windows.Forms.WebBrowser,改用基于Edge Chromium内核的Microsoft.Web.WebView2控件:- 安装NuGet包:
Install-Package Microsoft.Web.WebView2 - 在代码中替换原WebBrowser实例为WebView2,初始化时确保加载最新的Edge运行时:
var webView2 = new WebView2(); await webView2.EnsureCoreWebView2Async(); // 绑定认证相关的导航逻辑
- 安装NuGet包:
设置正确的用户代理
在EWS客户端实例中显式设置现代浏览器的UserAgent,避免被认证页面判定为过时客户端:var exchangeService = new ExchangeService(ExchangeVersion.Exchange2016); exchangeService.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0";安装WebView2运行时
如果系统未安装Edge WebView2常青版运行时,WebView2控件可能无法正常加载现代内核,需安装官方提供的WebView2运行时(可在应用打包时包含运行时,或单独安装)。抓包验证请求头
使用Fiddler等工具捕获认证流程中的HTTP请求,确认登录后的跳转请求中,UserAgent已正确设置为现代浏览器标识,排除请求头被篡改的情况。
内容的提问来源于stack exchange,提问作者FabLser
相关产品推荐
相关产品推荐

