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

Win11更新后VS2010中Ajax Toolkit弹窗失效问题求解

修复方案

问题根因

Windows 11默认升级了内置Trident(IE)内核的安全策略,VS2010自带的ASP.NET Development Server(Cassini)、默认调试浏览器调用的IE渲染逻辑,和老版本Ajax Control Toolkit的弹窗脚本、DOM层级规则存在兼容性冲突。线上环境基于IIS托管,不受本地调试上下文的特殊安全权限限制,因此控件可正常运行。

按优先级执行的修复步骤

1. 修正调试进程的IE渲染模式

  • 按下Win+R输入regedit打开注册表编辑器,定位到路径HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
  • 新建32位DWORD值,若项目基于.NET Framework 4.0,名称填WebDev.WebServer40.exe;若基于.NET Framework 2.0/3.5,名称填WebDev.WebServer20.exe,数值数据设为11001,基数选择十进制,保存后关闭注册表
  • 若调试时默认使用IE浏览器,在同路径下再新建一个32位DWORD值,名称为iexplore.exe,数值同样设为11001,完成后重启Visual Studio 2010

2. 关闭本地调试相关的IE安全拦截

  • 打开控制面板 -> 程序和功能 -> 启用或关闭Windows功能,找到「Internet Explorer 增强保护模式」选项取消勾选,确认后重启系统
  • 打开IE浏览器的Internet选项,切换到安全选项卡,将http://localhost添加到受信任站点列表,取消勾选受信任站点区域的「启用保护模式」,将该区域安全级别调整为中低

3. 项目配置兜底兼容

  • 找到页面或母版页中的ScriptManager控件,设置ScriptMode="Release",避免Win11下IE内核自动加载兼容模式调试脚本
  • 给所有Ajax CalendarExtender控件强制指定弹窗样式类,修正Win11窗口合成逻辑导致的弹窗层级被遮挡问题:
<ajaxToolkit:CalendarExtender ID="ceDate" runat="server" TargetControlID="txtDate" CssClass="ajax-calendar-pop" />
  • 对应样式规则添加如下内容:
.ajax-calendar-pop {
    z-index: 99999 !important;
    position: absolute !important;
}
  • 清理项目下bin、obj文件夹内容,清空浏览器缓存后重新编译项目

4. 长期稳定方案

废弃VS2010自带的Cassini调试服务器,将本地项目挂载到系统自带的IIS上进行调试,IIS运行上下文和线上环境完全一致,不会触发调试服务器的特殊权限限制,可彻底避免这类Win11兼容问题。

注意:不要在生产环境修改上述配置,所有调整仅针对本地调试环境生效,线上环境无需任何改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:33:23