【发布时间】:2020-12-16 02:53:12
【问题描述】:
我正在开发一个新的 Blazor WebAssembly 应用程序 (NET 5.0),但在从会话存储中读取大字符串(约 3000 个字符)时遇到问题。我得到了一个结果,但它被截断并在中间添加了一个“...”。结果总是正好 1000 字节。
在下面的代码中,dataKey 是我要读取的数据的字符串键。 JSRuntime 像这样注入:
@inject IJSRuntime JSRuntime
我第一次尝试从会话存储中读取项目如下所示:
// Initial try (truncated)
var myValue1 = await JSRuntime.InvokeAsync<string>("sessionStorage.getItem", dataKey);
然后搜索了一下,发现建议不要在webassembly中等待,所以我改成这样:
// Remove the await (still truncated)
var myValue2 = ((IJSInProcessRuntime)JSRuntime).Invoke<string>("sessionStorage.getItem", dataKey);
这给了我一个相同的结果,一个正好 1000 字节的截断字符串。
在阅读更多内容后,我发现建议在某些情况下使用 Unmarshalled 调用。我试过了,但我的结果只是空的。我找不到这个用例的清晰示例,所以我的代码可能不正确。
// Unmarshalled (null)
var myValue3 = ((IJSUnmarshalledRuntime)JSRuntime).InvokeUnmarshalled<string, object>("sessionStorage.getItem", dataKey);
经过大量搜索后,我找不到任何其他建议。谁能帮我从会话存储中读取这个字符串?
谢谢!
【问题讨论】: