2012-03-22 12 views
20

मेरे पास एक पृष्ठ जावास्क्रिप्ट एप्लिकेशन (जावास्क्रिप्ट एमवीसी के साथ किया गया है) और एएसपी.नेट एमवीसी 3 (NServiceMVC के साथ किया गया) के शीर्ष पर बनाए गए आरईएसटी सेवाओं के साथ बैकएंड है।मैं एक पृष्ठ वेब ऐप/आरईएसटी बैकएंड के साथ मिनीप्रोफाइलर का उपयोग कैसे करूं?

आरईएसटी सेवाओं में मिनीप्रोफाइलर स्थापित और चल रहा है, और एक्स-मिनीप्रोफाइलर-आईडी हेडर प्रत्येक AJAX अनुरोध के साथ वापस आते हैं। मेरे पास वास्तव में मिनीप्रोफाइलर चल रहा है और काम कर रहा है, लेकिन मुझे इस पर कोई जानकारी नहीं मिली, और इसलिए मुझे यकीन नहीं है कि मैं इसे सही तरीके से कर रहा हूं।

क्या यह एक समर्थित परिदृश्य है, और क्या अब ऐसा करने का कोई विशिष्ट तरीका है?


यह क्या मैं वर्तमान में कर रहा हूँ है:

एचटीएमएल एप्लिकेशन में (जो सभी स्थिर कोड, कोई गतिशील सामान है), मेरे पास है:

<script type="text/javascript" src="/api/profiler"></script> 

मेरी MVC ऐप्लिकेशन में, मेरे पास है:

public ActionResult Profiler() 
    { 
     if (!ControllerContext.HttpContext.IsDebuggingEnabled) 
     { 
      return new EmptyResult(); 
     } 
     return new ContentResult() { 
      Content = StackExchange.Profiling.MiniProfiler.RenderIncludes(
         position: RenderPosition.Right, 
         showControls: true 
        ) 
         .ToString() 
         .Replace("<script type=\"text/javascript\">", "") 
         .Replace("</script>", "") 
     }; 
    } 

जाहिर है, वहाँ हार्डकोडेड <script> टैग को निकाल देते हैं करने के लिए यहाँ में एक हैक है।

इसके अलावा, चीजों के बाकी एमवीसी पक्ष से, प्रोफाइलर सामान्य रूप से सामान्य रूप से समान होता है। जब आप ऐप में कोई कार्रवाई करते हैं जो एक आरईएसटी कॉल होने का कारण बनता है, तो मिनिप्रोफाइल इसे कोने में दिखाता है। showControls:true पैरामीटर का उपयोग करना यहां बहुत उपयोगी है, इसलिए स्पष्ट बटन दिखाई देता है, क्योंकि अन्यथा आपको केवल क्रियाओं की निरंतर सूची मिलती है क्योंकि पूरे पृष्ठ को अनिवार्य रूप से कभी भी ताज़ा नहीं किया जाता है।

क्या यह करने के लिए यह "सही" तरीका है, या क्या कोई बेहतर तरीका है?

+0

बस स्पष्ट होना: आपका समाधान काम करता है, लेकिन आप पुष्टि करना चाहते हैं कि आप सर्वोत्तम प्रथाओं का पालन कर रहे हैं? –

+0

@ किर्कवॉल हां। चूंकि प्रोफाइलर पर बहुत अधिक दस्तावेज़ीकरण नहीं है, इसलिए मैं जानना चाहता हूं कि मैं मौजूदा समाधान को देख रहा हूं या नहीं। सबसे खराब मामला यह प्रश्न भावी वेब खोजों के लिए कुछ दस्तावेज प्रदान कर सकता है। यदि यह "सर्वश्रेष्ठ" तरीका है तो मैं शायद एक पैच सबमिट करूंगा, इसलिए मुझे अपना '.replace()' हैक नहीं करना है और इसे वास्तविक "आधिकारिक" तरीका बनाना है। – gregmac

+0

मेरे पास एक ही सवाल है। क्या आप अभी भी ऐसा कर रहे हैं? – Jerry

उत्तर

1

आपके कोड में एक धारणा है कि @ MiniProfiler.RenderIncludes() जावास्क्रिप्ट का उपयोग करके इसकी सभी सामग्री उत्पन्न करता है। हालांकि यह वर्तमान समय पर मान्य धारणा हो सकती है, यह बदल सकती है।

क्यों हैक पूरी तरह से नहीं बचें और प्रोफाइलर लोड करने के लिए AJAX अनुरोध का उपयोग क्यों करें? किसी भी परिदृश्य में, चाहे AJAX या एम्बेडेड स्क्रिप्ट, कॉलबैक के माध्यम से प्रोफाइलर डालने का कार्य कुछ हद तक प्रोफाइलिंग के परिणाम को प्रभावित करेगा।

<div id="profiler"></div> 
<script type="text/javascript"> 
    $.load("#profiler","api/profiler"); 
</script> 
संबंधित मुद्दे