今天在用客户方案测试iAMT的System Defense功能的时候,碰到一个奇怪的现象,当设置好一条流量过滤规则以后,怎么也无法成功应用到iAMT中。在应用规则时候,看起来是正常的,程序 也没有报告什么错误和异常;但是,当通过程序重新浏览规则时,发现刚才的规则没有增加进去。 怪事了,让客户工程师也测了一把,他说他那边没问题,换了几个版本的iAMT机器试了一下,问题都一样。一下子有点摸不着头绪了,问题出在哪呢?
        后来,重新写了一条新的规则,确能够成功应用到iAMT中,仔细对比一下,发现两者的区别在于规则的名字有不一样,不能成功应用的那条规则的名字中有一个 空格,恍然大悟! 这个是老问题了,说实在话,这个问题我以前碰到过好几次,没想到这次又碰上了老问题,时间一长,有些东西还真不是一下子能记住的。原因是这样,在iAMT SDK中的《Network Interface Guide.pdf》文档中关于CircuitBreakerFilterType(7.9.3.3)结构中的string FilterName是这样解释的“Filter name string is optional. Contains 7-bit ASCII characters, in the range of 33 to 126 excluding ‘:’, ‘,’, '>', '<', '&', and ‘”’ characters.  String length is limited to 16 characters.”,空格符号,尖括号,冒号,逗号都是不能出现在过滤规则的名称中的。
        至此,真相大白!出现这个问题的原因,第一是我自己没有时刻记住这个trick,另外,客户的应用中如果能增加关于过滤规则名称的检查,从用户友好度方面来说,将会是更好的,否则,用户碰到问题的时候,总归是有点莫明其妙的。