我正在使用以下本地开发配置:
目标是在本地开发配置中使用Azure Function模拟器开发WebAssembly App,而不必每次都发布Azure进行测试...
当我尝试使用http.GetStringAsync()方法从blazor应用程序访问伪函数时,通过IP地址访问func模拟器时,我遇到了一个问题,像这样的解释:
使用类似localhost的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
(I even try taping it "http://xxx.xxx.xxx.xxx:7071/api/HelloEcho"
in a safari browser on my phone connected on the same network ==> it works , I get a response)
,但是当我尝试访问它时,从blazor应用中用其IP 替换本地主机, Http.GetStringAsync(“ http://xxx.xxx.xxx.xxx:7071/api/HelloEcho”)=>我收到一条错误消息
WebAssembly.JSException:类型错误:无法在System.Net.Http.WebAssemblyHttpHandler.doFetch处获取
可能我错过了一些东西...但是...如果它在浏览器中有效,为什么不在应用程序中使用http.Get?我该怎么做才能使其正常工作?
NB:在功能主机中,为CORS添加了参数:“ *” Visual Studio版本16.6.0预览版6.0 Azure Functions核心工具(3.0.2534提交哈希:bc1e9efa8fa78dd1a138dd1ac1ebef97aac8d78e) 函数运行时版本:3.0.13353.0 WebAssembly 3.2.0-rc1.20223.4
答案 0 :(得分:0)
要测试您不需要IIS的应用程序,可以使用ctrl + F5来运行功能应用程序和blazor应用程序,它将很好地工作。 我这样做了,还没有任何问题。 您是否真的需要IIS,为什么?
答案 1 :(得分:0)
通过HTTPS加载页面时出现混合内容错误,但是异步请求尝试通过HTTP进行通信。这被认为是security risk
要解决此问题,您可以将两个资源都“升级”到HTTPS,也可以将两个资源“降级”到HTTP。
使用HOSTS文件可以使您创建测试dns条目,而不是尝试为IP地址设置证书,从而完全避免同时使用IP地址和端口号。