13

का उपयोग कर मैं एमएफसी-मिनी-प्रोफाइलर का उपयोग करने की कोशिश कर रहा हूं, मैं एक डीबीप्रोफिल्ड कनेक्शन बना रहा हूं और इसे नीचे निर्माण पर डीबीकॉन्टेक्स्ट में भेज रहा हूं। एसक्यूएल द्वारा अपेक्षित के रूप में कार्य करने के लिए आवेदन जारी है प्रोफाइलर के संपर्क में नहीं है।एमवीसी-मिनी-प्रोफाइलर

public class WebContext : DbContext 
{ 
    static DbConnection _connection = new SqlConnection(ConfigurationManager.ConnectionStrings["WebContext"].ConnectionString); 
    static DbConnection _profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(_connection);   

    public WebContext() 
      : base(_profiledConnection, true) 
    { 

    } 

ओह मेरे बुरे।

मैं इसे संशोधित कर लिया है ताकि जब मेरी WebContext मेरी UnitOfWork में निर्माण किया है मैं एक ProfiledDbConnection में पारित

public UnitOfWork() 
{    
    var profiledConnection = MvcMiniProfiler.Data.ProfiledDbConnection.Get(connection); 
    this.context = new MyContext(profiledConnection); 
} 

मैं देख लिया है और MiniProfier वर्तमान Application_BeginRequest में स्थापित किया गया है और यह एक ProfiledDbConnection लौटाता है जब मैं फिर डेटाबेस को आज़माएं और पूछें कि ProfiledDbProviderServices क्लास में एक त्रुटि फेंक दी गई है।

protected override string GetDbProviderManifestToken(DbConnection connection) 
{ 
    return tail.GetProviderManifestToken(connection); 
} 

यह विधि "प्रदाता ने प्रदाता मेनिफेस्ट टोकन स्ट्रिंग वापस नहीं किया है।" त्रुटि

+6

btw, एक स्थिर ग के खिलाफ लॉग होता है कनेक्शन खतरनाक है - यह अनुरोध-विशिष्ट होना चाहिए। –

+0

एक स्थिर कनेक्शन खतरनाक क्यों है? साथ ही, क्या मैं वास्तव में एक स्थिर संदर्भ का उपयोग कर रहा हूं यदि मैं केवल अपने नियंत्रक के शीर्ष पर एक नया संदर्भ शुरू करता हूं, न कि प्रत्येक अनुरोध में? – sirtimbly

उत्तर

7

I संदिग्ध यह स्थैतिक क्षेत्र प्रारंभकर्ता से संबंधित है। वेब ऐप्स पर कनेक्शन कभी स्थिर रहें (लेकिन सबसे अधिक अनुरोध-विशिष्ट)।

कुंजी है: ProfiledDbConnection वास्तव में क्या बाहर आता है? Get विधि केवल ProfiledDbConnection लौटाती है यदि आप वर्तमान में प्रोफाइलिंग कर रहे हैं (वर्तमान अनुरोध पर), और कनेक्शन उस अनुरोध पर MiniProfiler उदाहरण के विरुद्ध प्रोफाइल किया गया है।

  • स्थिर क्षेत्र बिना आरंभ नहीं हो जाता एक अनुरोध संदर्भ (या एक गैर डेवलपर अनुरोध संदर्भ):

    आप एक स्थिर क्षेत्र का उपयोग करते हैं, तब वहाँ दो स्थितियों रहे हैं कोई रूपरेखा MiniProfiler.Current के रूप में हो जाएगा रिक्त है

  • स्थिर क्षेत्र आरंभ नहीं हो जाता है, लेकिन सब कुछ बहुत पहले अनुरोध, जल्दी से मर चुका है जो
+0

एक बड़ा +1। एक स्थिर संदर्भ संदर्भ के साथ एक ऐप प्रोफाइलिंग में थोड़ा सा बिंदु है। आप बस देखकर बता सकते हैं कि इसमें समस्याएं होंगी! –

+0

ओह मेरे बुरे। मैंने अपना कोड बदल दिया है लेकिन अब ProfiledDbProviderServices –

+1

@fezz आह सही में टोकन अपवाद प्राप्त कर रहा हूं; ठीक है, ईएफ कोडफर्स्ट एक उपकरण नहीं है जिसका उपयोग मैं करता हूं, इसलिए मैंने उस परिदृश्य को मान्य नहीं किया है। हालांकि, हमने (आज) उपयोगकर्ता को पहले ईएफ कोड के लिए एक पैच स्वयंसेवक बनाया है। मुझे मर्ज करने के लिए कुछ घंटे दें –