2009-09-22 16 views
17

"潜在的に危険なRequest.Form値"エラーを回避しようとしていて、運がない。はい、はい、私は他のすべてのStackOverflow関連の質問を読んだが、それらのどれも私は答えに近づかないようです。私はすべての関連コントローラアクションで[ValidateInput(false)]を使用しています...そして何度もチェックしました。すべての関連するASPXビューでValidateRequest='false'を使用しています。ValidateInput属性がASP.NET MVCで動作しないように見える

私はASP.NET MVC 2プレビュー1を使用していますが、フレームワークでエラーが発生していないため、これは問題ではないと思います。 Page.ProcessRequestは正確です。私は間違って何かを見ることができない、私はさらにweb.configに設定し、それも解決していない。

答えて

7

まあ...私自身の問題に答える... ...犯人:Html.RenderAction<T>。要求コンテキスト(例えば、マスターページまたは子パーシャル)から他のアクションへの呼び出しがある場合、これらのアクションも[ValidateInput(false)]を適切に設定する必要があります。これはMVCやASP.NETでPageオブジェクトが動作する方法では少し問題に思えますが、これは本当に難しいバグです。

32

asp.net 4では、web.configでも検証モードを設定する必要があります。

<system.web>要素の子として次のように設定します。

<httpRuntime requestValidationMode="2.0"/> 

Asp.Net 4は、HTTPリクエストのBeginRequst段階の前に、要求の検証を実行するためにシステムに指示され、デフォルトで4.0にrequestValidationModeを設定し、 。検証は、システムが要求を検証しないように指示するアクション属性に達する前に行われ、属性を無駄にします。 requestValidationMode = "2.0"を設定すると、asp.net 2.0要求の検証動作に戻り、ValidateInput属性が期待どおりに機能するようになります。

(おかげでジム - upvotes belong here

+0

は、任意の欠点/短所はありますか?アクションごとに設定する方法はありますか? –

+0

Uは人生の節約の人です。また、私にはこれについての短所もありますか? –

1

あなたはすなわち、すべての部分の要求を確認し、あなたの要求時に呼び出されるすべてのコントローラのアクションに属性を追加する必要があります。

0

これらの提案は、[ValidateInput(false)]をFormCollectionと組み合わせて使用​​する必要がある場合に発生するバグの問題を解決しないことに注意してください。

参照してください:このアプローチを使用するときASP.NET MVC 3 ValidateRequest(false) not working with FormCollection

関連する問題