160

ckeditorを使用するフォームがあります。このフォームは、Asp.Net 2.0および3.5では正常に機能しましたが、Asp.Net4以降では機能しなくなりました。ValidateRequest="false"ディレクティブがあります。助言がありますか?

4

5 に答える 5

198

エラーページ自体で解決策が見つかりました。web.configにrequestValidationMode="2.0"を追加する必要があります

<system.web>
    <compilation debug="true" targetFramework="4.0" />
    <httpRuntime requestValidationMode="2.0" />
</system.web>

MSDN情報:HttpRuntimeSection.RequestValidationModeプロパティ

于 2010-04-20T09:21:38.887 に答える
105

1 ページの検証を 2.0 に戻す方法があります。以下のコードを web.config に追加するだけです。

<configuration>
    <location path="XX/YY">
        <system.web>
            <httpRuntime requestValidationMode="2.0" />
        </system.web>
    </location>

    ...
    the rest of your configuration
    ...

</configuration>
于 2010-11-24T17:11:14.610 に答える
58

これは古い質問であることは承知していますが、MVC 3 でこの問題が発生した場合は、ActionMethodwith[ValidateInput(false)]をデコレートして、単一の のリクエスト検証をオフにすることができますActionMethod。これは便利です。また、ファイルに変更を加える必要がないweb.configため、.NET 4 要求の検証を他の場所で引き続き使用できます。

例えば

[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
    // Do your own checking of value since it could contain XSS stuff!
    return View();
}
于 2012-06-13T16:24:19.127 に答える
28

これは、検証モードを変更せずに機能します。

System.Web.Helpers.Validation.Unvalidatedのヘルパーを使用する必要がありますSystem.Web.WebPages.dllUnvalidatedRequestValues検証なしでフォームと QueryString にアクセスできるオブジェクトを返します。

例えば、

var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));

MVC3 と .NET 4 で動作します。

于 2011-06-15T23:45:37.760 に答える
16

RequestValidator別のアプローチは、4.0 の検証動作を維持することですが、派生して設定する独自のクラスを定義することです。

<httpRuntime requestValidationType="YourNamespace.YourValidator" />

(どこYourNamespace.YourValidatorがいいのか、推測できるはずです...)

このようにして、4.0 の動作の利点 (具体的には、検証が処理の早い段階で行われる) を維持しながら、必要な要求を通過させることもできます。

于 2012-02-03T14:52:20.957 に答える