मेरे पास एक एमवीसी 3 एप्लीकेशन है जिसमें कस्टम हैंडलरर एट्रिब्यूट है ताकि मैं त्रुटि ईमेल कर सकूं। मुझे अक्सर "संभावित रूप से खतरनाक अनुरोध प्राप्त होता है। क्लाइंट से फॉर्म मान पता चला था", लेकिन यह केवल फॉर्म मान के पहले कुछ वर्ण दिखाता है जो अपवाद का कारण बनता है। मैं एक संपूर्ण विचार मानना चाहता हूं जो एक बेहतर विचार प्राप्त करने के लिए दर्ज किया गया था यदि इनपुट उपयोगकर्ता द्वारा दुर्भावनापूर्ण या आकस्मिक था। हालांकि, जब मैं हैंडलरर एट्रिब्यूट में फॉर्म मान खींचने का प्रयास करता हूं, तो यह वही त्रुटि फेंकता है! किसी भी विचार को मेरे अपवाद हैंडलर में सत्यापन के बिना request.Form से फॉर्म मान कैसे प्राप्त करें?मैं एमवीसी में "संभावित रूप से खतरनाक अनुरोध। क्लाइंट से फॉर्म मान का पता चला" फ़ॉर्म मान कैसे प्राप्त करूं?
public class HandleErrorLogAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
base.OnException(context);
//Record Error
string errorDetails = HttpUtility.HtmlEncode(context.Exception.ToString());
// Throws "otentially dangerous..." error here
foreach (var key in context.RequestContext.HttpContext.Request.Form.AllKeys)
{
errorDetails += key + "=" + HttpUtility.HtmlEncode(context.RequestContext.HttpContext.Request.Form[key]);
}
// Send Email with errorDetails
}
}
आप '[ValidateInput (false)] 'का उपयोग कर सकते हैं और इसे स्वयं सत्यापित कर सकते हैं। –
यह ठीक है कि यह एक त्रुटि उत्पन्न करता है, मैं सिर्फ यह जानना चाहता हूं कि किस इनपुट ने इसका कारण बनाया है। मैंने अपनी ऑनएक्सप्शन विधि में [ValidateInput (false)] जोड़ने का प्रयास किया, लेकिन यह अभी भी त्रुटि को फिर से फेंक दिया। – Austin
ठीक है, 'ValidateInput' वास्तव में इसके लिए "काम नहीं करता है, कम से कम नहीं। [यहां क्यों है।] (Http://stackoverflow.com/questions/807662/why-is-validateinputfalse-not-working/2530823#2530823) असली मुद्दा यह है कि ऐसा करने का कोई सुरक्षित तरीका नहीं है जो केवल एक को प्रभावित करेगा कार्रवाई। यह एक वैश्विक सेटिंग है जो पूरे ऐप को प्रभावित करती है। –