我有一个.NET 4 WCF服务作为IIS网站运行,具有ASP.NET兼容模式。一旦服务方法接受字符串参数,并且存在包含'&'的值ASP.NET管道引发了验证异常。我已经分配了以下配置设置:
<system.web>
<httpRuntime requestValidationMode="2.0"/>
<pages validateRequest="false"/>
</system.web>
错误仍然存在。无论输入是否已编码,都会发生错误。我找到了一个潜在的解决方案here,它建议提供System.Web.Util.RequestValidator的自定义实现,但是我想知道是否只有配置设置可以使用替代方案。
修改 我也找到了this,但是建议的解决方案无法解决问题。
答案 0 :(得分:4)
我找到了解决方案。我设置了以下配置设置:
<system.web>
<httpRuntime requestPathInvalidCharacters=""/>
</system.web>
默认情况下,&符号是无效的路径字符。
答案 1 :(得分:2)
一些可能有用的链接:
摘要:MS表示如果&符号出现在查询字符串中,则应使用%26。
http://connect.microsoft.com/wcf/feedback/details/527185/wcf-rest-uritemplate-does-not-recognise-or-amp-ampersand-as-same-character
摘要:海报正在谈论编码&amp;在使用&
的WCF消息正文中
XmlReader chopping off whitespace after ampersand entity?
因此,如果它在查询字符串中,则使用%26对其进行编码。如果它在消息正文中编码为html实体:&