यह ध्यान देने योग्य है कि यद्यपि System.Web.VirtualPathUtility.ToAbsolute यहां बहुत उपयोगी है, यह नियंत्रण के लिए एक आदर्श प्रतिस्थापन नहीं है। ResolveUrl।
कम से कम एक महत्वपूर्ण अंतर है: Control.ResolveUrl क्वेरी स्ट्रिंग्स को बहुत अच्छी तरह से संभालता है, लेकिन वे वर्चुअलपाथ उपयोगिता को एचटीपीएक्सप्शन फेंकने का कारण बनते हैं। यह पहली बार होने पर पूरी तरह से रहस्यमय हो सकता है, खासकर अगर आप उस तरीके से उपयोग कर रहे हैं जो Control.ResolveUrl काम करता है।
आप क्वेरी स्ट्रिंग का उपयोग करना चाहते की सटीक संरचना पता है, यह बहुत आसान के आसपास काम करने के लिए अर्थात् है,:
public static string GetUrl(int id)
{
string path = VirtualPathUtility.ToAbsolute("~/SomePage.aspx");
return string.Format("{0}?id={1}", path, id);
}
... लेकिन अगर क्वेरी स्ट्रिंग एक से में पारित कर दिया हो रही है अज्ञात स्रोत तो आपको इसे किसी भी तरह से पार्स करने की आवश्यकता होगी। (इससे पहले कि आप उसमें बहुत गहरा हो जाएं, ध्यान दें कि सिस्टम.यूरी आपके लिए ऐसा करने में सक्षम हो सकता है)।
यह किसी भी अधिक सच नहीं हो सकता। .NET 4 में जब मैं 'VirtualPathUtility.ToAbsolute ("~/bar/baz? Qux = 123 और quux = 456", "/ foo") का मूल्यांकन करता हूं,' मुझे '/ foo/bar/baz? Qux = 123 और quux = 456' मिलता है –