अजीब एक। GoDaddy साझा-होस्टिंग ASP.NET ऐप्स मध्यम ट्रस्ट के तहत निष्पादित होते हैं, और perf काउंटर निर्माण के लिए शायद पूर्ण विश्वास की आवश्यकता होती है, लेकिन perf काउंटर निर्माण वह नहीं है जो यहाँ विफल हो रहा है। (और अगर यह विफल हो जाता है, तो यह प्रचारित नहीं होगा क्योंकि mySQL क्लाइंट कोड द्वारा perf coutner निर्माण अपवादों को निगल लिया जाता है)।
इसके बजाय, यह perf काउंटर निर्माण से पहले, एक स्ट्रिंग संसाधन तक पहुँचने का प्रयास करने में विफल हो रहा है। MySQL क्लाइंट के Resources.Designer.cs में कोड की इस पंक्ति के साथ विफलता है:
return ResourceManager.GetString("PerfMonCategoryName", resourceCulture)
कठिनाई के बढ़ते क्रम में कोशिश करने के लिए कुछ चीजें:
-
सुनिश्चित करें कि आपके ऐप की बिन निर्देशिका में MySQL क्लाइंट DLL हैं और आप क्लाइंट DLL को GoDaddy के GAC से लोड करने का प्रयास नहीं कर रहे हैं। यदि आप इससे बच सकते हैं तो कभी भी GoDaddy द्वारा प्रदत्त बायनेरिज़ पर निर्भर न रहें!
-
EN-US संस्कृति पर स्विच करें ताकि क्लाइंट को किसी अन्य संसाधन DLL की तलाश में न जाना पड़े, और देखें कि क्या समस्या दूर हो जाती है।
-
अपने ऐप की बिन निर्देशिका में बाइनरी वितरण से डीएलएल की प्रतिलिपि बनाने के बजाय, स्रोत कोड से .NET क्लाइंट बनाएं। यह इस तरह की समस्याओं को डीबग करना आसान बना देगा क्योंकि MySQL कोड ब्लैक बॉक्स नहीं होगा। और, एक चुटकी में, आपको समस्याग्रस्त संसाधन-प्राप्ति कॉल (या हार्ड-कोड लोकेल) को बदलने देगा! :-)
BTW, यदि आप समस्या से बचने की कोशिश करने के लिए अपने कनेक्शन स्ट्रिंग में "उपयोग प्रदर्शन मॉनिटर =गलत" सेट करने का लुत्फ उठाते हैं, तो परेशान न हों। समस्याग्रस्त कोड उस सेटिंग की परवाह किए बिना निष्पादित हो जाता है:
public PerformanceMonitor(MySqlConnection connection)
{
this.connection = connection;
//// this line is where it bombs
string categoryName = Resources.PerfMonCategoryName;
//// this line is affected by connection string setting
if (connection.Settings.UsePerformanceMonitor && procedureHardQueries == null)
{
try
{
procedureHardQueries = new PerformanceCounter(categoryName,
"HardProcedureQueries", false);
procedureSoftQueries = new PerformanceCounter(categoryName,
"SoftProcedureQueries", false);
}
catch (Exception ex)
{
Logger.LogException(ex);
}
}
}