You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Microsoft Graph C#登录时IE出现startsWith脚本错误求助

解决Microsoft Graph登录弹窗startsWith脚本错误的问题

我刚复现了完全一样的情况!这两天微软悄悄调整了login.microsoftonline.com的登录页面JavaScript代码,移除了对旧版Internet Explorer的ES5兼容补丁——startsWith是ES6才引入的字符串方法,而你的应用默认调用的IE控件还在使用IE7兼容模式,自然就不支持这个方法了。

下面是几个可行的解决办法,按推荐程度排序:

1. 强制应用使用IE11 Edge模式(最快见效)

.NET应用默认会用IE7兼容模式加载WebBrowser控件(也就是登录弹窗的载体),我们可以通过修改注册表强制它用IE11的Edge模式,这样就能支持ES6特性了。在你的C#应用启动时添加这段代码:

using Microsoft.Win32;
using System.IO;
using System.Diagnostics;

private static void ForceIEEdgeMode()
{
    var currentApp = Path.GetFileName(Process.GetCurrentProcess().MainModule.FileName);
    using (var registryKey = Registry.CurrentUser.CreateSubKey(
        @"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
        RegistryKeyPermissionCheck.ReadWriteSubTree))
    {
        // 11001 = IE11 Edge模式(忽略DOCTYPE,用最新渲染引擎)
        registryKey.SetValue(currentApp, 11001, RegistryValueKind.DWord);
    }
}

然后在Main方法的最开头调用ForceIEEdgeMode(),重启应用后登录弹窗就会用IE11的现代模式加载页面,startsWith错误就会消失。

2. 替换为WebView2控件(长期解决方案)

微软已经弃用了旧的WebBrowser控件,推荐使用基于Chromium的WebView2来处理网页交互。如果你打算长期维护这个应用,建议把登录弹窗的载体换成WebView2:

  • 先通过NuGet安装Microsoft.Web.WebView2包
  • 调整登录逻辑,用WebView2控件加载授权页面,代替默认的WebBrowser弹窗

这样不仅能彻底解决兼容性问题,还能获得更好的性能和现代网页支持。

3. 手动调整IE兼容性设置(临时应急)

如果只是临时测试,可以手动打开IE浏览器,做以下设置:

  • 点击右上角的设置图标 → 兼容性视图设置
  • 在“添加此网站”输入框中填入login.microsoftonline.com,点击删除(确保它不在兼容性视图列表里)
  • 勾选“使用Microsoft兼容性列表”,然后重启IE

不过这个方法需要每个用户手动操作,不适合部署给大量用户的应用。


内容的提问来源于stack exchange,提问作者Laikoni

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:33:47