.net core 绕过WebView2中显示的Kestrel服务器的无效SSL证书

.net core 绕过WebView2中显示的Kestrel服务器的无效SSL证书,.net-core,webview2,.net Core,Webview2,给定的 WPF应用程序启动Kestrel服务器 红隼听http://0.0.0.0:5000和https://0.0.0.0:6000 Kestrel指向静态HTML文件index.HTML WPF显示指向https://127.0.0.1:6000/index.html 结果 如果WebView2指向http://127.0.0.1:5000/index.html一切正常 如果WebView2指向https://127.0.0.1:6000/index.html我收到一个关于不受信任证书

给定的

  • WPF应用程序启动Kestrel服务器
  • 红隼听
    http://0.0.0.0:5000
    https://0.0.0.0:6000
  • Kestrel指向静态HTML文件
    index.HTML
  • WPF显示指向
    https://127.0.0.1:6000/index.html
结果

  • 如果WebView2指向
    http://127.0.0.1:5000/index.html
    一切正常
  • 如果WebView2指向
    https://127.0.0.1:6000/index.html
    我收到一个关于不受信任证书的错误
问题

  • 是否可以在Kestrel或WebView2中禁用或忽略本地主机的SSL验证
不应触摸Windows设置,例如在“msmc”中将“localhost”证书标记为受信任,或生成自签名证书,因为此WPF应用程序应在不同的计算机上运行

换句话说,必须有一种比本文描述的更简单的方法

红隼

public class WebServer { public static Task Run() { var configuration = new ConfigurationBuilder().Build(); var urls = new[] { "http://0.0.0.0:7000", "https://0.0.0.0:8000" }; var environment = WebHost .CreateDefaultBuilder(new string[0]) .UseConfiguration(configuration) .UseUrls(urls) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<WebStartup>(); return environment.Build().RunAsync(); } } public class WebStartup { public IConfiguration Configuration { get; } public WebStartup(IConfiguration configuration) { Configuration = configuration; } public void ConfigureServices(IServiceCollection services) { services.AddSpaStaticFiles(configuration => { configuration.RootPath = "index.html"; }); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { app.UseDeveloperExceptionPage(); //app.UseHsts(); //app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseSpaStaticFiles(); } } 公共类Web服务器 { 公共静态任务运行() { var configuration=new ConfigurationBuilder().Build(); var url=new[] { "http://0.0.0.0:7000", "https://0.0.0.0:8000" }; var环境=WebHost .CreateDefaultBuilder(新字符串[0]) .UseConfiguration(配置) .useURL(URL) .UseContentRoot(目录.GetCurrentDirectory()) .Useii整合() .UseStartup(); 返回environment.Build().RunAsync(); } } 公共类网站启动 { 公共IConfiguration配置{get;} 公共网站启动(IConfiguration配置) { 配置=配置; } public void配置服务(IServiceCollection服务) { services.AddSpaStaticFiles(配置=> { configuration.RootPath=“index.html”; }); } public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境) { app.UseDeveloperExceptionPage(); //app.UseHsts(); //app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseSpaStaticFiles(); } } WPF中的WebView2控件

public MainWindow() { WebServer.Run(); InitializeComponent(); WebView.Source = new Uri("https://127.0.0.1:6000/index.html"); // HTTP on 5000 works, HTTPS 6000 - no WebView.NavigationCompleted += (object sender, CoreWebView2NavigationCompletedEventArgs args) => { WebView.InvalidateVisual(); }; } 公共主窗口() { Run(); 初始化组件(); WebView.Source=新Uri(“https://127.0.0.1:6000/index.html“”;//HTTP在5000个作品上,HTTPS 6000-否 WebView.NavigationCompleted+=(对象发送者,CoreWebView2NavigationCompletedEventArgs参数)=> { WebView.InvalidateVisual(); }; }
WebView2目前没有直接公开该功能。如果您愿意,您可以在中打开问题,我们可以提出功能请求

作为一种解决方法,您可以尝试使用调用。然而,我还没有尝试过setIgnoreCertificateErrors,它也被标记为实验性的,所以不能肯定它会以您喜欢的方式工作