在使用IP通过Http.GetStringAsync通过IP通过“本地模式”将Blazor WebAssembly与Azure函数一起使用时,出现“无法获取错误”

时间:2020-05-16 19:43:23

标签: blazor webassembly

我正在使用以下本地开发配置:

    通过Visual Studio中的本地 func 模拟器
  • Azure Function
  • 通过 Blazor WebAssembly (通过本地IIS Express)访问。

目标是在本地开发配置中使用Azure Function模拟器开发WebAssembly App,而不必每次都发布Azure进行测试...

当我尝试使用http.GetStringAsync()方法从blazor应用程序访问伪函数时,通过IP地址访问func模拟器时,我遇到了一个问题,像这样的解释:

  1. 使用类似localhost的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 
    
      (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)
    
  3. ,但是当我尝试访问它时,从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

2 个答案:

答案 0 :(得分:0)

要测试您不需要IIS的应用程序,可以使用ctrl + F5来运行功能应用程序和blazor应用程序,它将很好地工作。 我这样做了,还没有任何问题。 您是否真的需要IIS,为什么?

答案 1 :(得分:0)

通过HTTPS加载页面时出现混合内容错误,但是异步请求尝试通过HTTP进行通信。这被认为是security risk

要解决此问题,您可以将两个资源都“升级”到HTTPS,也可以将两个资源“降级”到HTTP。

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