2017-08-20 70 views
0

将规则添加到SubscriptionClient时,如果我不删除所有空白,则会出现语法错误。我读过的大量例子都没有这样做。任何想法为什么?Azure ServiceBus SqlFilter表达式语法错误

// This works (whitespace stripped from expression) 
var rd= new RuleDescription("ZonesRule", new SqlFilter("Zone='All'")); 
subscriptionClient.AddRule(rd); 

// This does not work (normal whitespace in expression) 
var rd= new RuleDescription("ZonesRule", new SqlFilter("Zone = 'All'")); 
subscriptionClient.AddRule(rd); 

Microsoft.ServiceBus.Messaging.FilterException:“有解析SQL表达式错误 。 [令牌行= 1,列= 4,令牌出错= ,其他详细信息=无法识别的字符。 ''] TrackingId:4087836f-321C-45d7-B217-cb7fae75ee67_G11_B27 ......”

+1

语法完全没有问题。但是,如错误消息所示,有一个无法识别的空白字符,这个代码示例是从哪里复制的?如果是这样,空白可能会被编码,导致无效的字符。您可以尝试手动输入字符以查看是否有帮助。 – forester123

回答

1

由于forester123提到的语法有一点问题都没有。我也在我身边测试它,它工作正常。我们也可以从azure官方文档获得SQLFilter syntax

enter image description here

如果可能的话,请试试使用最新版本4.1.3的WindowsAzure.ServiceBus

+0

Yessir - 经过仔细检查后,出现了Unicode非空白字符(%A0或html  )字符,而不是普通空格。虽然我已经检查过了。多谢你们! – pseabury