本地运行Azure Function V2时抛出Newtonsoft.Json.JsonReaderException异常
解决VS2017本地运行Azure Function V2队列触发器JsonSerialization.cs报错问题
我之前调试Azure Function V2队列触发器时也碰到过完全一样的情况——本地启动正常,但一发队列消息VS就自动下载JsonSerialization.cs还报错,发布到云端却完全没问题。结合我的排查经验,给你几个可行的解决办法:
1. 禁用VS的「仅我的代码」调试选项
这是最常见的触发原因,VS调试器会试图跟踪到框架内部代码,但因为缺少符号文件就会出现下载报错:
- 打开VS2017的「工具」→「选项」
- 导航到「调试」→「常规」
- 取消勾选「启用仅我的代码」
- 重启VS后重新运行项目,再发送队列消息测试
2. 确保Function Core Tools版本兼容
你提到用Func Core Tool运行项目,V2版本的Azure Function需要对应2.x系列的Core Tools,先检查当前版本:
func --version
如果版本不是2.x,卸载旧版本后重新安装适配的Core Tools,安装完成后重启VS再尝试本地运行。
3. 清理项目缓存并重新生成
有时候项目的bin/obj缓存会引发奇怪的兼容性问题:
- 关闭VS,删除项目目录下的
bin和obj文件夹 - 重新打开VS,右键项目选择「清理」,接着执行「生成」操作
- 启动本地函数,发送队列消息验证
4. 更新本地Azure存储模拟器
队列触发器依赖本地存储模拟器,如果模拟器版本过旧也可能导致序列化相关的异常:
- 查看当前存储模拟器的版本,下载最新版本安装
- 重启模拟器后再运行函数项目
既然发布到Azure能正常运行,说明你的模板生成代码本身没有问题,问题肯定出在本地开发环境的配置或工具兼容性上,按上面的步骤逐一排查应该能解决。
内容的提问来源于stack exchange,提问作者Jerry Liu
相关产品推荐
相关产品推荐

