Ckeditor kullandığım bir form var. Bu form Asp.Net 2.0 ve 3.5'de iyi çalıştı, ancak şimdi Asp.Net 4+'da çalışmıyor. ValidateRequest = "false" yönergesine sahibim. Baska öneri?
Ckeditor kullandığım bir form var. Bu form Asp.Net 2.0 ve 3.5'de iyi çalıştı, ancak şimdi Asp.Net 4+'da çalışmıyor. ValidateRequest = "false" yönergesine sahibim. Baska öneri?
Yanıtlar:
Hata sayfasında çözüm bulundu. Sadece requestValidationMode = "2.0" eklemek gerekiyor
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
MSDN bilgileri: HttpRuntimeSection.RequestValidationMode Özelliği
Bir sayfa için doğrulamayı tekrar 2.0'a çevirmenin bir yolu var. Aşağıdaki kodu web.config dosyasına eklemeniz yeterlidir:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
Bu eski bir soru olacak ama MVC 3'te bu sorunla karşılaşırsanız eğer o zaman dekore edebilirsiniz ActionMethod
ile [ValidateInput(false)]
ve sadece tek bir isteği doğrulama kapatmak ActionMethod
kullanışlı olan. Ve web.config
dosyada herhangi bir değişiklik yapmanız gerekmez , böylece .NET 4 istek doğrulamasını başka her yerde kullanabilirsiniz.
Örneğin
[ValidateInput(false)]
public ActionMethod Edit(int id, string value)
{
// Do your own checking of value since it could contain XSS stuff!
return View();
}
Bu, doğrulama modunu değiştirmeden çalışır.
System.Web.Helpers.Validation.Unvalidated
Adlı kişiden bir yardımcı kullanmanız gerekiyor System.Web.WebPages.dll
. UnvalidatedRequestValues
Forma ve QueryString'e doğrulama olmadan erişmeye izin veren bir nesne döndürecektir .
Örneğin,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
MVC3 ve .NET 4 için benim için çalışıyor.
Başka bir yaklaşımın 4.0 doğrulama davranışına uymak, ancak türetilmiş RequestValidator
ve ayarlanmış kendi sınıfınızı tanımlamak olduğunu unutmayın :
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(nerede YourNamespace.YourValidator
olduğunu tahmin edebilmelisiniz ...)
Bu şekilde 4.0'ların davranışının avantajlarını (özellikle, doğrulamanın işlemenin daha erken aşamalarında gerçekleştiğini) korurken aynı zamanda izin vermeniz gereken isteklere de izin verirsiniz.