发现问题

最近在用blazor server对接OpenAI的api,开发自己的ChatGPT网页,这边设计的是聊天内容存储在浏览器的localstorage里面,每次打开网页的时候获取聊天记里并渲染界面

在开发和使用期间,偶发的会进不进去网站,也没发现有报错,最后清理浏览器缓存解决了问题。

最近这两天使用的比较频繁,发现这个问题出现的概率有点高,最后定位下问题,发现是聊天记录获取的时候出现的问题,在Blazor中调用js的获取数据方法时程序就挂起了,没有继续往下执行,刚开始怀疑是不是存储方法或者json序列化的问题,换了写法,也不能解决问题

解决问题

最后在aspnetcore的github仓库中找到了这条issue

localStorage.getItem errors with complex objects

Snipaste_2023-04-22_00-04-15.png

有网友在下面回复或许是超出了 SignalR 消息大小限制,想想也是这么回事,Blazor读取localstorage的时候会将信息通过SignalR发送到服务端,如果大小超过限制那么这个过程就没法完成

立马去翻阅官方文档,修改Blazor Server的SignalR配置,增加了消息大小MaximumReceiveMessageSize的限制,解决问题

修改代码示例:

  • builder.Services.AddServerSideBlazor()
  • .AddHubOptions( op =>
  • op.MaximumReceiveMessageSize = 100*1024*1024 //10M
  • );