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

Blazor与WPF加载本地图片URL的差异及配置排查

问题分析与解决方案

这是Blazor Server默认的HTTPS强制跳转配置导致的问题——WPF没有这类强制逻辑,所以能正常访问HTTP地址;而Blazor基于ASP.NET Core,默认会把非localhost/127.0.0.1的HTTP请求自动重定向到HTTPS,但你的局域网IP和机器名部署的服务没配置对应HTTPS证书,就触发了net::ERR_SSL_PROTOCOL_ERROR。

核心原因

Blazor Server项目模板默认启用了HttpsRedirection中间件,同时搭配了HTTPS相关配置。当请求来自localhost/127.0.0.1以外的HTTP地址时,中间件会强制跳转至HTTPS,但如果你的服务在局域网IP/机器名下没有配置有效的SSL证书,浏览器就会抛出SSL协议错误。

解决方案

根据场景需求,提供两种常用处理方式:

方式1:禁用HTTPS强制跳转(适合开发/内部局域网场景)

  1. 在Program.cs中注释或移除HTTPS重定向中间件:
// 移除这一行
app.UseHttpsRedirection();
  1. 修改launchSettings.json,将applicationUrl设置为包含局域网IP和机器名的HTTP地址:
"applicationUrl": "http://localhost:5000;http://192.168.1.34:5000;http://MYMACHINENAME:5000",
"environmentVariables": {
  "ASPNETCORE_ENVIRONMENT": "Development"
}
  1. 如果Program.cs中存在AddHsts()配置,同样移除:
// 移除这一行(如果存在)
builder.Services.AddHsts();

方式2:为局域网IP/机器名配置SSL证书(适合生产/需要HTTPS的场景)

  1. 用PowerShell生成包含局域网IP和机器名的自签名证书:
New-SelfSignedCertificate -DnsName "MYMACHINENAME", "192.168.1.34" -CertStoreLocation "Cert:\LocalMachine\My"
  1. 将生成的证书导入到本地计算机的「受信任根证书颁发机构」,避免浏览器提示不安全。
  2. 在Program.cs中配置Kestrel使用该证书(替换为你的证书指纹):
builder.WebHost.UseKestrel(options =>
{
    options.ListenAnyIP(5001, listenOptions =>
    {
        listenOptions.UseHttps("你的证书指纹");
    });
});
  1. 更新launchSettings.json的applicationUrl包含HTTPS地址:
"applicationUrl": "https://localhost:5001;https://192.168.1.34:5001;https://MYMACHINENAME:5001",

验证

修改配置后重启Blazor Server服务,尝试通过对应地址访问图片,确认控制器能正常命中,浏览器不再出现SSL错误。

内容的提问来源于stack exchange,提问作者James Harcourt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:42:14