如何禁用WCF服务的ASP.NET请求验证?

时间:2011-07-11 23:25:48

标签: asp.net wcf

我有一个.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,但是建议的解决方案无法解决问题。

2 个答案:

答案 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;在使用&amp;的WCF消息正文中 XmlReader chopping off whitespace after ampersand entity?

因此,如果它在查询字符串中,则使用%26对其进行编码。如果它在消息正文中编码为html实体:&amp;