2011-07-11 7 views
1

ASP.NET互換モードのIIS Webサイトとして.NET 4 WCFサービスを実行しています。いったんサービスメソッドが文字列パラメータを受け取り、 '&'を含む値があると、ASP.NETパイプラインは検証例外を発生させます。私は次の設定を割り当てました:WCFサービスのASP.NET要求の検証を無効にする方法はありますか?

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

そして、このエラーは解決しません。エラーは、入力がエンコードされているかどうかに関係なく発生します。私は可能性のある解決策hereを見つけましたが、これはSystem.Web.Util.RequestValidatorのカスタム実装を提供することを示唆していますが、構成設定のみで行うことができる選択肢があるかどうかは疑問でした。

EDIT: 私はまた、しかし、提案された解決策で問題が解決しない、thisを見つけました。

+0

わかりました:wcfサービスを呼び出すプログラムは面白くないし、実際の問題を解決するコードにアクセスできません。それは正しいのでしょうか? – NotMe

+0

私は呼び出しコードとサービスの両方にアクセスできます。私は展開しなくても問題を解決したいと思っていました。さらに重要なことは、カスタムバリデータを提供する以外にも、問題を解決するための方法があるかどうかを知りたかったのです。私はまだ入力を検証することが欲しいです、私はちょうど 'a&b'のような文字列のエラーにしたくないです。 – eulerfx

+1

私は本当にあなたが提出した値を正しくエンコードする方が良いと思っています。だから、入力が上でエンコードされていてもそれが起こったと言えば、それはどのようにエンコードされたのですか? - いくつかの方法があります。 – NotMe

答えて

4

解決策を見つけました。

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

デフォルトでアンパサンドは無効なパス文字です。

2

助けるかもしれないいくつかのリンク:

要約: MSはアンパサンドは、クエリ文字列に表示されます場合は、%26を使用する必要があることを述べています。
http://connect.microsoft.com/wcf/feedback/details/527185/wcf-rest-uritemplate-does-not-recognise-or-amp-ampersand-as-same-character

要約:ポスターはそれが26%でそれをエンコード、クエリ文字列にいた場合、だから、&amp;
XmlReader chopping off whitespace after ampersand entity?

を使用してWCFメッセージの本文に&をコードについて話しています。メッセージの本文にHTMLエンティティとしてエンコードされている場合:&amp;

+0

私は適切なコード体系を使用していますが、依然として同じエラーが発生しています。さらに調査する予定です。 – eulerfx

関連する問題