Azure Service Bus主题订阅引发关于System.DBNull的FilterException



订阅Azure Service Bus主题中的所有消息都会发送到死信队列,其中FilterException表示

运算符"=="不能应用于类型为"string"one_answers"System.DBNull"的操作数

筛选器类型为SqlFilter,表达式为:

TriggerEvent in ("A01", "A04", "A28", "A47") OR (TriggerEvent = "A31" AND EventReasonCode = "REG_MANUAL")

它已经运行了几个月,没有出现任何FilterException,目前在不同的生产环境中运行良好。

一位同事找到了这个错误的原因,由于我在谷歌上搜索这个错误时没有发现任何相关的内容,我会立即发布这个问题和答案。

由于某些原因,测试环境在触发事件周围用双引号而不是单引号进行了更新,原因代码刺痛如下:

TriggerEvent = "A31" AND EventReasonCode = "REG_MANUAL"

当我们把它改回单引号时,一切都很好:

TriggerEvent in ('A01', 'A04', 'A28', 'A47') OR (TriggerEvent = 'A31' AND EventReasonCode = 'REG_MANUAL')

错误消息具有误导性,很难看出原因是什么,因为我在任何地方都找不到任何System.DBNull值。

相关内容

最新更新