Diskuze: Konec Internet Exploreru
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 7 zpráv z 7.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Myslím, že montuješ víc věcí do jednoho. Internet Explorer je prohlížeč (jeden z mnoha).
Potřebuji aby servery, které již nebudou fungovat na Internet Exploreru...
Servery běží na nějakém operačním systému, poskytují nějaká data a je jim úplně šumák, v čem si je uživatel bude zobrazovat. Nemají s Internet Explorerem nic společného a v podstatě o jeho existenci ani nevědí.
Možná, že jsem se asi nevyjádřil úplně správně.
V praxi se mi občas stane, že některé webové systémy, např. Czechpoint,
na nějakou dobu (asi než Microsoft nebo správci webu provedou opravu)
přestanou fungovat v IE zatímco v Google Chrome nebo Edge fungují bez
problémů.
Používám Visual Studio 2015, aplikace je .NET Framework 4.7.2.
Při spouštění formuláře musím použít tento kód
int BrowserVer = webBrowser1.Version.Major;
int RegVal;
if (BrowserVer >= 11)
RegVal = 11001;
else if (BrowserVer == 10)
RegVal = 10001;
else if (BrowserVer == 9)
RegVal = 9999;
else if (BrowserVer == 8)
RegVal = 8888;
else
RegVal = 7000;
RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
Key.SetValue(Process.GetCurrentProcess().ProcessName + ".exe", RegVal, RegistryValueKind.DWord);
Key.Close();
Přiznám se, že přesně nevím co dělá, ale díky němu funguje WebBrowser na formuláři stejně jako IE v Pc na kterém aplikace běží.
Pomohlo by mi, kdyby nějak podobně šly přiřadit WebBrowseru vlastnosti Chromu nebo Edge.
Nastavení Edge jsem snad vyřešil následujíci úpravou
int RegVal;
int WindowsVerzeMajor = Environment.OSVersion.Version.Major;
int WindowsVerzeMinor = Environment.OSVersion.Version.Minor;
if (WindowsVerzeMajor == 10
|| (WindowsVerzeMajor == 6 && WindowsVerzeMinor > 1))
{
RegVal = 12001;
}
else
{
int BrowserVer = webBrowser1.Version.Major;
if (BrowserVer >= 11)
RegVal = 11001;
else if (BrowserVer == 10)
RegVal = 10001;
else if (BrowserVer == 9)
RegVal = 9999;
else if (BrowserVer == 8)
RegVal = 8888;
else
RegVal = 7000;
}
RegistryKey Key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION", true);
Key.SetValue(Process.GetCurrentProcess().ProcessName + ".exe", RegVal, RegistryValueKind.DWord);
Key.Close();
Tak bohužel nastalo to čeho jsem se obával
Na WinFormu mám webBrowser, který se evidentně chová jako IE 11, přestože
na Pc je nainstalovaný Edge.
Potřebuji otevřít web zabezpečený TLS 1.2. V Edge otevřít jde, v IE 11 a
mé aplikaci se zobrazí chyba se zabezpečením.
Jak donutit webBrowser aby se choval jako Edge (tzn. aby otevřel ten web s TLS
1.2)?
Mnou zmiňované předchozí řešení nezabírá.
Microsoft vydal novou verzi WebView2, která je postavená na Edge (takže na chromiu). Práce s ní je stejná jako s původním WebView.
Příklad pro WinForms.
https://docs.microsoft.com/…ted/winforms
Dokumentace
https://docs.microsoft.com/…ge/webview2/#…
Použití WebView2 by bylo ideální, bohužel nevím jak ve WebView2 používat metody podobné WebBrowser.DocumentText (abych získat HTML kód načtené stránky) a WebBrowser.Document.GetElementsByTagName (abych získal kolekci HTML prvků podle jejich typu, např. hypertextové odkazy <a>)
Zobrazeno 7 zpráv z 7.