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

如何将Blazor应用连接至Aspire 9.1无服务器SignalR模拟器

解决Aspire 9.1无服务器SignalR模拟器的混合内容错误

问题原因

你的Blazor应用通过HTTPS(https://localhost:7164)加载,但Aspire默认启动的SignalR模拟器使用HTTP地址(http://0.0.0.0:8888),浏览器的混合内容策略会拦截这种跨协议请求,导致报错。

解决方案

1. 为Aspire的SignalR模拟器启用HTTPS

修改AppHost的Program.cs配置,在SignalR模拟器的构建链中添加WithHttps():

var signalr = builder
    .AddAzureSignalR("signalr", AzureSignalRServiceMode.Serverless)
    .RunAsEmulator()
    .WithHttps(); // 启用HTTPS

var hub = builder
    .AddAzureFunctionsProject<Projects.Entries_Hub>("hub")
    .WithReference(signalr)
    .WaitFor(signalr)
    .WithExternalHttpEndpoints()
    .WithHostStorage(storage);

2. 确认连接字符串自动更新

启动Aspire后,SignalR模拟器会输出HTTPS格式的连接字符串,Aspire会自动将这个HTTPS连接字符串注入到你的Azure Functions项目中,无需手动修改Negotiate方法代码。

3. 信任开发证书(若出现证书错误)

如果浏览器提示证书不受信任,运行以下命令信任.NET开发HTTPS证书:

  • Windows:
    dotnet dev-certs https --trust
    
  • macOS:
    sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.aspnet/https/aspnetapp.pfx
    

补充说明

手动启动SignalR模拟器时正常,是因为你可能手动配置了HTTPS,或者当时Blazor应用使用HTTP运行,不存在跨协议请求冲突。Aspire默认给Blazor应用启用HTTPS,但SignalR模拟器默认用HTTP,因此需要显式为模拟器开启HTTPS来匹配协议。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 05:04:55