- .net-core/
- .net core 绕过WebView2中显示的Kestrel服务器的无效SSL证书
.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我收到一个关于不受信任证书
给定的
结果
问题
- 是否可以在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,它也被标记为实验性的,所以不能肯定它会以您喜欢的方式工作