我正在使用以下方法进行本地开发配置:
- Azure 函数通过 Visual Studio 中的本地函数模拟器
- 通过Blazor WebAssembly访问(通过本地 IIS express(。
目标是在本地开发配置中使用 Azure 函数模拟器开发 WebAssembly 应用,而无需每次在 azure 上发布以进行测试...
当我尝试使用http.GetStringAsync()
方法从 blazor 应用程序访问虚拟函数时,我在通过 IP 地址访问 func 模拟器时遇到问题,如下所示:
-
当使用本地主机从 Blazor 应用调用时,例如
Http.GetStringAsync("http://localhost:7071/api/HelloEcho"( => localhost ,它有效,我得到了回应
-
使用本地主机或 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
在同一网络上连接的手机上的野生动物园浏览器中==>它有效,我得到回应。
- 但是当我尝试访问它时,像这样从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 地址和端口号。