क्या .NET, ASP.Net, या ASP.Net MVC में URL को सत्यापित करने का कोई तरीका है?क्या नेट पर यूआरएल वैधकर्ता है?
उत्तर
तुम एक यूआरएल को मान्य करने के Uri.TryCreate
उपयोग कर सकते हैं:
public bool IsValidUri(string uri)
{
Uri validatedUri;
return Uri.TryCreate(uri, UriKind.RelativeOrAbsolute, out validatedUri);
}
टिप्पणियों का सुझाव है कि TryCreate
सिर्फ अपवाद एक स्तर नीचे से निपटने ले जाता है। हालांकि, मैंने स्रोत कोड की जांच की और पाया कि यह मामला नहीं है। TryCreate
के अंदर कोई प्रयास/पकड़ नहीं है, यह एक कस्टम पार्सर का उपयोग करता है जिसे फेंकना नहीं चाहिए।
static bool IsValidUri(string urlString) {
try {
new Uri(urlString);
return true;
} catch {
return false;
}
}
divo के उत्तर –
कोशिश/पकड़ कार्यक्षमता का उपयोग करने का एक तेज़ तरीका (संभवतः) रेगेक्स का उपयोग करना होगा। यदि आपको अपवाद को पकड़ने वाले URL के 1000s को सत्यापित करना होता है तो कई बार धीमा हो जाएगा।
यहां a link to sample Regex - अधिक जानने के लिए Google का उपयोग करें।
पर प्रदर्शन के संबंध में टिप्पणी देखें, मुझे किसी भी तरह संदेह है। regexes, यहां तक कि संकलित भी विशेष रूप से तेज़ नहीं हैं। भले ही आप कभी भी एक लिख सकें जो सटीक था। – Kris
यह तेज़ होगा, लेकिन सही होने के लिए बहुत कठिन है। –
क्रिस- शायद आपको समझ में नहीं आता कि कितने महंगा फेंक अपवाद हो सकते हैं- यदि वे बड़े लूप में किए जाते हैं तो वे बहुत धीमे होते हैं। – RichardOD
आप Uri.IsWellFormedUriString, उस के लिए अपने स्वयं के समारोह बनाने की आवश्यकता का उपयोग कर सकते हैं:
public static bool IsWellFormedUriString(string uriString, uriKind uriKind);
uriKind कहाँ हो सकता है:
UriKind.RelativeOrAbsolute
UriKind.Absolute
UriKind.Relative
अधिक जानकारी के लिए देखें: http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx
यह कई स्थितियों में काम नहीं करता है – Farshid
इस प्रकार प्रदान किए गए उत्तरों एक योजना की जांच नहीं करते हैं, जो सभी प्रकार के अवांछित इनपुट की इजाजत देता है, जो आपको जावास्क्रिप्ट इंजेक्शन के लिए कमजोर बना सकता है (TheCloudle की टिप्पणी देखें ssSky)।
एक यूआरआई एक वस्तु की एक अनूठी पहचान है। "सी: \ टेस्ट" एक वैध यूआरआई है।
/// <summary>
/// Validate a URL.
/// </summary>
/// <param name="url"></param>
/// <returns></returns>
private bool ValidUrl(string url)
{
Uri validatedUri;
if (Uri.TryCreate(url, UriKind.Absolute, out validatedUri)) //.NET URI validation.
{
//If true: validatedUri contains a valid Uri. Check for the scheme in addition.
return (validatedUri.Scheme == Uri.UriSchemeHttp || validatedUri.Scheme == Uri.UriSchemeHttps);
}
return false;
}
को परिभाषित करें जो योजनाएं आप की अनुमति देगा और कोड तदनुसार परिवर्तन:
अपने प्रोजेक्ट में मैं निम्नलिखित कोड का इस्तेमाल किया।
+1, यह सबसे अच्छा जवाब है और यह अद्वितीय भी है कि वास्तव में "यूआरएल को कैसे सत्यापित करें", एक ** यूआरएल **! – ElektroStudios
- 1. क्या पैरामीटर वाले वैधकर्ता होना संभव है?
- 2. डब्लूएसडीएल वैधकर्ता
- 3. Symfony2 में फ्लाई पर वैधकर्ता कैसे जोड़ें?
- 4. नेट फ्रेमवर्क 4 एसडीके डाउनलोड यूआरएल?
- 5. नेट - एक "unwind" क्या है?
- 6. क्यों w3 वैधकर्ता कहता है क्लिकक्लिक मान्य नहीं है?
- 7. क्या जावा जेएआर फ़ाइल नेट नेट असेंबली के समान है?
- 8. एएसपीनेट पर यूआरएल रूटिंग, यूआरएल
- 9. यूआरएल में/#!/मतलब क्या है?
- 10. क्या नेट में "सेट" डेटा संरचना है?
- 11. पीएचपी var_dump की नेट बराबर क्या है?
- 12. .नेट फ्रेमवर्क संस्करण (या क्या चलता है?)
- 13. अज्ञात वैधकर्ता भले ही यह वैधकर्ताओं और कॉलबैक पर रेल गाइड में है
- 14. क्या यह एक ही यूआरएल पर रीडायरेक्ट करना सुरक्षित है?
- 15. आईफोन पर कॉल करने के लिए सही यूआरएल क्या है?
- 16. क्या यूआरएल हैश सर्वर पर Node.js के साथ उपलब्ध है?
- 17. क्या https रिश्तेदार फॉर्म एक्शन यूआरएल पर बनाए रखा है?
- 18. एमवीसी 4 में हायफेनेट यूआरएल कैसे उत्पन्न करें .नेट
- 19. क्या जावा और नेट
- 20. नेट फ्रेमवर्क का प्रारंभिक इतिहास क्या है?
- 21. नेट बनाम जावा। आपका क्या लेना है
- 22. नेट फ्रेमवर्क 4 क्या बढ़ाया गया है?
- 23. इस नेट का लाभ क्या है
- 24. क्या सी # एनबी नेट से तेज है?
- 25. क्या नेट के लिए सौर उपलब्ध है?
- 26. क्या java.util.concurrent.Executor के बराबर एक नेट है?
- 27. [....] नेट स्रोतों में क्या मतलब है?
- 28. वेरिलोग में "नेट" स्टैंड क्या है?
- 29. एएसपी नेट MVC रूटिंग: केवल स्ट्रिंग आईडी के साथ यूआरएल
- 30. क्या एमवीसी 3 में स्ट्रिंग लम्बाई वैधकर्ता को रनटाइम मान प्रदान करना संभव है?
यह सुझाए गए प्रयास/पकड़ कार्यान्वयन से बेहतर है। – RichardOD
यदि आप 2.0+ पर हैं, तो निश्चित रूप से ... –
हालांकि यह सिर्फ एक और स्तर को नीचे खींचने/पकड़ने के लिए दफन कर रहा है, जहां आपको इसे देखना नहीं है। –