【问题标题】:Blazor WASM File does not exist (but is readable?)Blazor WASM 文件不存在(但可读吗?)
【发布时间】:2021-01-21 17:47:28
【问题描述】:

我有一个想要独立的 Blazor WASM PWA(如果可能)。

目前,我正在尝试在 wwwroot 下操作一个 json 文件

Location of Json File

现在,虽然我可以通过 HttpClient.GetFromJsonAsync 读取其内容,但所有其他访问该文件的尝试都失败了。

我尝试过的:

  • 通过 File.Exists 检查文件是否存在 -> 返回 false
  • 通过 HttpClient.PostAsJsonAsync 发布对象 -> 为 Json 文件返回 404

我知道在 WebAssembly 中,文件被缓存/加载到浏览器中,所以我明白为什么我无法使用“/datasource-json/Ingredient.json”之类的路径找到文件,但为什么“GetFromJsonAsync” " 那么使用那条路径呢?

我是否遗漏了一些重要的东西,我该如何解决这个问题? 对于这个特定的项目,如果可能的话,我不想使用另一个 Api-Project + Entity Framework。

【问题讨论】:

  • 为了安全起见,浏览器对 WASM 中的文件系统有限制。 Read

标签: blazor webassembly static-files file-not-found wwwroot


【解决方案1】:

Wasm 完全在浏览器上运行,因此您实际上没有文件系统。如果你有的话,那就是客户端机器,但这将是一个重大的安全漏洞。

为什么从 http 获取文件是因为服务器提供了对 web 根目录中所有文件的 GET 访问。

为什么 POST 不起作用是因为发布内容需要一个服务器端点来监听该 URL 上的数据并且可以理解您发送的格式。因此,您需要某种具有特定 URL 且与文件 URL 不同的控制器

【讨论】:

  • 好的,感谢您的澄清。所以这意味着实际上需要 Web-Api 或类似的东西?
  • 是的。您的另一个选择是 wasm 端的内存数据,但如果您需要将其存储在服务器上,您仍然需要一个端点(控制器)
猜你喜欢
  • 1970-01-01
  • 2020-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多