Winforms WebBrowser控件-安装IE 11后出现页面呈现错误

Winforms WebBrowser控件-安装IE 11后出现页面呈现错误,winforms,internet-explorer,web,webbrowser-control,internet-explorer-11,Winforms,Internet Explorer,Web,Webbrowser Control,Internet Explorer 11,安装Internet Explorer 11预览版后,我对Winforms.NET类“WebBrowser”有问题。当我调用我的网页时,它看起来像是禁用javascipt。如果基于WebBrowser的应用程序和你的网页在IE10中仍然可以正常工作,那么以下可能就是问题的原因 在一个颇具争议的决定中 这是IE11中UI字符串的外观: navigator.userAgent: Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) lik

安装Internet Explorer 11预览版后,我对Winforms.NET类“WebBrowser”有问题。当我调用我的网页时,它看起来像是禁用javascipt。

如果基于
WebBrowser
的应用程序和你的网页在IE10中仍然可以正常工作,那么以下可能就是问题的原因

在一个颇具争议的决定中

这是IE11中UI字符串的外观:

navigator.userAgent: Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko document.documentMode: 11 document.compatMode: CSS1Compat
谢谢,但修补程序不起作用。如何在.NET中轻松设置UrlMkSetSessionOption?@majco333,不知道“热修复”是什么意思。我已经发布了相关的代码,将
GetIEVersion
Win32
p/invoke定义留给您作为练习来实现。我必须为Win32函数导入.net项目什么?因为我在我的项目中没有看到。感谢我的作品:u函数UrlMkSetSessionOption(ByVal dwOption作为整数,ByVal pBuffer作为字符串,ByVal dwBufferLength作为整数,ByVal dwReserved作为整数)作为整数结束函数我使用了这个用户代理:Mozilla/5.0(windowsnt 6.1)AppleWebKit/537.36(KHTML,像Gecko)Chrome/30.0.1599.101 Safari/537.36 noserio:谢谢!!! navigator.userAgent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0;) document.documentMode: 10 document.compatMode: CSS1Compat
static public void ChangeUserAgentForIE11()
{
    if (GetIEVersion() <= 10)
        return;

    var userAgent = new StringBuilder(256);
    int length = 0;
    Win32.UrlMkGetSessionOption(Win32.URLMON_OPTION_USERAGENT, userAgent, userAgent.Capacity-1, ref length, 0);

    // IE10: navigator.userAgent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0)
    // IE11: navigator.userAgent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; Media Center PC 6.0; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; rv:11.0) like Gecko

    var regex = new Regex(@"^\s*(Mozilla/\d+\.\d+\s+\()(Windows\s+.*)like Gecko\s*$", RegexOptions.IgnoreCase); //IE11 regex
    var match = regex.Match(userAgent.ToString());
    if (match.Success)
    {
        var newUserAgent = String.Concat(match.Groups[1], "compatible; MSIE 10.0; ", match.Groups[2]);
        Win32.UrlMkSetSessionOption(Win32.URLMON_OPTION_USERAGENT, newUserAgent, newUserAgent.Length, 0);
        var verifyUserAgent = new StringBuilder(256);
        length = 0;
        Win32.UrlMkGetSessionOption(Win32.URLMON_OPTION_USERAGENT, verifyUserAgent, verifyUserAgent.Capacity-1, ref length, 0);
        if (verifyUserAgent.ToString() != newUserAgent)
            throw new ApplicationException("Unable to change WebBrowser User Agent.");
    }
}