मेरे पास एक फॉर्म है जिस पर मैं ckeditor का उपयोग करता हूं। इस फॉर्म ने Asp.Net 2.0 और 3.5 पर ठीक काम किया लेकिन अब यह Asp.Net 4+ में काम नहीं करता है। मेरे पास ValidateRequest = "false" निर्देश है। कोई सुझाव?
मेरे पास एक फॉर्म है जिस पर मैं ckeditor का उपयोग करता हूं। इस फॉर्म ने Asp.Net 2.0 और 3.5 पर ठीक काम किया लेकिन अब यह Asp.Net 4+ में काम नहीं करता है। मेरे पास ValidateRequest = "false" निर्देश है। कोई सुझाव?
जवाबों:
त्रुटि पृष्ठ पर समाधान मिला। बस requestValidationMode = "2.0" जोड़ने की आवश्यकता है
<system.web>
<compilation debug="true" targetFramework="4.0" />
<httpRuntime requestValidationMode="2.0" />
</system.web>
MSDN जानकारी: HttpRuntimeSection.RequestValidationMode गुण
एक पृष्ठ के लिए सत्यापन को 2.0 पर वापस करने का एक तरीका है। बस नीचे दिए गए कोड को अपने web.config में जोड़ें:
<configuration>
<location path="XX/YY">
<system.web>
<httpRuntime requestValidationMode="2.0" />
</system.web>
</location>
...
the rest of your configuration
...
</configuration>
मुझे पता है कि यह एक पुराना सवाल है, लेकिन अगर आप MVC 3 में इस समस्या का सामना करते हैं, तो आप अपने ActionMethod
साथ सजावट कर सकते हैं [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();
}
यह सत्यापन मोड को बदले बिना काम करता है।
आपको एक System.Web.Helpers.Validation.Unvalidated
सहायक का उपयोग करना होगा System.Web.WebPages.dll
। यह एक ऐसी UnvalidatedRequestValues
वस्तु को वापस करने जा रहा है जो बिना सत्यापन के फॉर्म और QueryString को एक्सेस करने की अनुमति देता है।
उदाहरण के लिए,
var queryValue = Server.UrlDecode(Request.Unvalidated("MyQueryKey"));
मेरे लिए MVC3 और .NET 4 के लिए काम करता है।
ध्यान दें कि एक और दृष्टिकोण 4.0 सत्यापन व्यवहार के साथ रखना है, लेकिन अपनी स्वयं की कक्षा को परिभाषित करना है जो इससे उत्पन्न होती है RequestValidator
और सेट होती है:
<httpRuntime requestValidationType="YourNamespace.YourValidator" />
(कहाँ YourNamespace.YourValidator
अच्छा है, आप अनुमान लगाने में सक्षम होना चाहिए ...)
इस तरह से आप 4.0s व्यवहार के फायदे (विशेष रूप से, कि पहले प्रसंस्करण में सत्यापन होता है) के फायदे रखते हैं, जबकि उन अनुरोधों को भी अनुमति देते हैं जिनके माध्यम से आपको गुजरने की आवश्यकता होती है।