起因
今天在Dynamics CRM 2013系统的日常运维中碰到一个自定义插件的错误: Invalid XML.Detai。
初步排查是xml文件格式无效。看代码时感觉一切正常,记录了相关日志,发现用户在操作时,传进来一个参数名中有&符号,后台执行的日志中:
程序在执行这个fetch查询时,出错了。
以前一直没有注意到这个问题,特意查询了系统高级查找生成的FetchXml文件发现,&特殊字符做了处理变成了 & ;
类似的还有
小于符号 -> < ;
大于符号 -> > ;
双引号 -> " ;
单引号 -> &apos ;
& -> & ;
解决方法
对变量字符串转换为HTML编码的格式
HttpUtility.HtmlEncode();