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

如何禁用WCF服务的ASP.NET请求验证?,asp.net,wcf,Asp.net,Wcf,我有一个.NET 4 WCF服务作为具有ASP.NET兼容模式的IIS网站运行。一旦其中一个服务方法接受字符串参数,并且存在包含“&”的值时,ASP.NET管道将引发验证异常。我已分配以下配置设置: <system.web> <httpRuntime requestValidationMode="2.0"/> <pages validateRequest="false"/> </system.web> 错误依然存在。无论输入是否编码,

我有一个.NET 4 WCF服务作为具有ASP.NET兼容模式的IIS网站运行。一旦其中一个服务方法接受字符串参数,并且存在包含“&”的值时,ASP.NET管道将引发验证异常。我已分配以下配置设置:

<system.web>
  <httpRuntime requestValidationMode="2.0"/>
  <pages validateRequest="false"/>
</system.web>

错误依然存在。无论输入是否编码,都会发生错误。我找到了一个可能的解决方案,建议提供System.Web.Util.RequestValidator的自定义实现,但是我想知道是否有其他方法可以仅通过配置设置来实现

编辑:
但是,我也发现,建议的解决方案并不能解决问题。

一些可能有帮助的链接:

摘要:MS声明,如果查询字符串中出现与号,则应使用%26。

摘要:海报介绍了使用
在WCF消息正文中对和进行编码


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

一些可能有帮助的链接:

摘要:MS声明,如果查询字符串中出现与号,则应使用%26。

摘要:海报介绍了使用
在WCF消息正文中对和进行编码


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

我找到了解决方案。我设置了以下配置设置:

<system.web>
    <httpRuntime requestPathInvalidCharacters=""/>
</system.web>


默认情况下,和符号是无效的路径字符。

我找到了解决方案。我设置了以下配置设置:

<system.web>
    <httpRuntime requestPathInvalidCharacters=""/>
</system.web>


默认情况下,与符号是无效的路径字符。

我们要明确的是:调用wcf服务的程序是劣质的,您无法访问它的代码来解决真正的问题?是这样吗?我可以访问呼叫代码和服务。我想在不部署的情况下解决这个问题。更重要的是,我想知道除了提供自定义验证器之外,是否有一种公认的方法来解决这个问题。我仍然希望输入得到验证,我只是不希望它在诸如“a&b”之类的字符串上出错。我真的认为您最好对提交的值进行正确编码,而不是降低防御措施以接受不应该的内容。那么,当你说即使在上面对输入进行编码时也会发生,那么它是如何编码的呢?--有几种方法。例如,“a&b”编码为“a%20%26%20b”(不带引号)。请参阅下面我的答案。要使用的编码取决于&出现的位置。我们要明确的是:调用wcf服务的程序是劣质的,您无法访问它的代码来修复真正的问题?是这样吗?我可以访问呼叫代码和服务。我想在不部署的情况下解决这个问题。更重要的是,我想知道除了提供自定义验证器之外,是否有一种公认的方法来解决这个问题。我仍然希望输入得到验证,我只是不希望它在诸如“a&b”之类的字符串上出错。我真的认为您最好对提交的值进行正确编码,而不是降低防御措施以接受不应该的内容。那么,当你说即使在上面对输入进行编码时也会发生,那么它是如何编码的呢?--有几种方法。例如,“a&b”编码为“a%20%26%20b”(不带引号)。请参阅下面我的答案。要使用的编码取决于&出现的位置。我正在使用正确的编码方案,仍然收到相同的错误。我正在使用正确的编码方案,仍然收到相同的错误。我们将进一步调查。