Как отключить проверку запросов ASP.NET для службы WCF? - PullRequest
1 голос
/ 12 июля 2011

У меня есть служба .NET 4 WCF, работающая как веб-сайт IIS с режимом совместимости ASP.NET. Как только один из методов службы принимает строковый параметр, а при наличии значения, содержащего '&', конвейер ASP.NET вызывает исключение проверки. Я назначил следующие настройки конфигурации:

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

И ошибка сохраняется. Ошибка возникает независимо от того, закодирован ли вход. Я нашел потенциальное решение здесь , которое предлагает предоставить пользовательскую реализацию System.Web.Util.RequestValidator, однако мне было интересно, есть ли альтернативы, которые можно сделать только с настройками конфигурации.

EDIT: Я также нашел это , однако предлагаемое решение не решает проблему.

Ответы [ 2 ]

4 голосов
/ 12 июля 2011

Я нашел решение. Я установил следующий параметр конфигурации:

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

По умолчанию амперсанд является недопустимым символом пути.

2 голосов
/ 12 июля 2011

Некоторые ссылки, которые могут помочь:

сводка: MS утверждает, что вы должны использовать% 26, если в строке запроса появляется амперсанд.
http://connect.microsoft.com/wcf/feedback/details/527185/wcf-rest-uritemplate-does-not-recognise-or-amp-ampersand-as-same-character

резюме: постер рассказывает о кодировании & в теле сообщения WCF с использованием &amp;
XmlReader отсекает пробел после амперсанда?

Итак, если он находится в строке запроса, закодируйте его с помощью% 26. Если оно находится в теле сообщения, закодируйте его как HTML-сущность: &amp;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...