当使用 IP 通过 Http.GetStringAsync 访问"local mode"将 Blazor WebAssembly 与 Azure Function 一起使用时,我得到了一个"Faile



我正在使用以下方法进行本地开发配置:

  • Azure 函数通过 Visual Studio 中的本地函数模拟器
  • 通过Blazor WebAssembly访问(通过本地 IIS express(。

目标是在本地开发配置中使用 Azure 函数模拟器开发 WebAssembly 应用,而无需每次在 azure 上发布以进行测试...

当我尝试使用http.GetStringAsync()方法从 blazor 应用程序访问虚拟函数时,我在通过 IP 地址访问 func 模拟器时遇到问题,如下所示:

  1. 当使用本地主机从 Blazor 应用调用时,例如

    Http.GetStringAsync("http://localhost:7071/api/HelloEcho"( => localhost ,它有效,我得到了回应

  2. 使用本地主机或 IP 地址从 Chrome 或 Edge 客户端访问 func API 时,例如在浏览器或远程设备中键入以下内容:

    http://localhost:7071/api/HelloEcho    => it works 
    http://xxx.xxx.xxx.xxx:7071/api/HelloEcho    => remote, it works 
    

我什至尝试将其录制http://xxx.xxx.xxx.xxx:7071/api/HelloEcho在同一网络上连接的手机上的野生动物园浏览器中==>它有效,我得到回应。

  1. 但是当我尝试访问它时,像这样从blazer应用程序中将其IP替换为本地主机Http.GetStringAsync("http://xxx.xxx.xxx.xxx:7071/api/HelloEcho")=> 我收到一条错误消息

WebAssembly.JSException: TypeError: Failed to fetch at System.Net.Http.WebAssemblyHttpHandler.doFetch

如果它可以在浏览器中工作,为什么不在应用程序中使用http.Get呢? 我该怎么做才能让它工作?


NB :在函数主机中,添加了 CORS 的参数:*

视觉工作室版本 16.6.0 预览版 6.0

Azure Functions Core Tools (3.0.2534 Commit hash: bc1e9efa8fa78dd1a138dd1ac1ebef97aac8d78e( 函数运行时版本:3.0.13353.0

网站组装 3.2.0-rc1.20223.4

若要测试不需要 IIS 的应用,可以使用 ctrl + F5 运行函数应用和 blazor 应用,它将正常工作。 我这样做了,还没有任何问题。 你真的需要IIS吗,为什么?

当页面通过 HTTPS 加载,但异步请求尝试通过 HTTP 进行通信时,会发生混合内容错误。这被视为安全风险

要解决此问题,您可以将这两个资源"升级"为 HTTPS,也可以将这两个资源"降级"为 HTTP。

使用 HOSTS 文件可以允许您创建测试 dns 条目,而不是尝试为 IP 地址设置证书,这使您可以完全避免输入 IP 地址和端口号。

相关内容

  • 没有找到相关文章

最新更新