2011-05-11 15 views
6

डिबगिंग के दौरान मैं निम्नलिखित प्रासंगिक आइटम के साथ एक सी # WinForms अनुप्रयोग है:टाइमआउट नहीं बल्कि

  • VS2010 SP1, .NET 3.5
  • धाराप्रवाह NHibernate 1.0 (एनएच 3.0 के साथ, हो सकता है यह हिस्सा है मुद्दा) के
  • ClickOnce के साथ तैनात
  • एसक्यूएल सर्वर 2008 R2 डेटाबेस

मैं तैनात प्रति मेरे मा पर स्थापित किया है Chine (ClickOnce के माध्यम से) और VS2010 डिबगर साथ-पक्ष के माध्यम से एक और की नकल चल रहा हूँ। यह वही कोड-बेस है। मैंने अभी कल प्रकाशित किया है और प्रकाशन के बाद से कोई भी कोड नहीं बदला है।

एक ही मशीन पर (फिर से, पक्ष-साथ चल रहा है), एक ही एसक्यूएल सर्वर उदाहरण की ओर इशारा करते, मेरे ऐप बार बाहर की तैनात प्रतिलिपि डेटाबेस के लिए लिखने की कोशिश कर। डीबगर के माध्यम से शुरू की गई प्रतिलिपि सिर्फ ठीक है। यह हर बार दोहराया जा सकता है।

असली दुनिया में केवल लोगों के एक जोड़े टाइमआउट रिपोर्ट कर रहे हैं। वे इमारत में एक ही स्थान पर, उसी विभाग में हैं। वे एकमात्र हैं (ठीक है, मुझे पता है)। मैं इसका उपयोग कर रहे डीबग करने के लिए एक ही SQL इंस्टेंस का उपयोग कर रहा हूं।

सभी फाइलें (.pdb के छोड़कर) समाधान में सभी परियोजनाओं के लिए तैनाती में शामिल हैं।

यह बाहरी अपवाद (मैं अभी तक कोई आंतरिक अपवाद के लिए एक भी नहीं है) के लिए स्टैक ट्रेस है:

Stack Trace: 
    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) 
    at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) 
    at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 
    at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 
    at System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 
    at System.Data.SqlClient.SqlDataReader.get_MetaData() 
    at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) 
    at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) 
    at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) 
    at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() 
    at NHibernate.AdoNet.AbstractBatcher.ExecuteReader(IDbCommand cmd) 
    at NHibernate.Loader.Loader.GetResultSet(IDbCommand st, Boolean autoDiscoverTypes, Boolean callable, RowSelection selection, ISessionImplementor session) 
    at NHibernate.Loader.Loader.DoQuery(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoQueryAndInitializeNonLazyCollections(ISessionImplementor session, QueryParameters queryParameters, Boolean returnProxies) 
    at NHibernate.Loader.Loader.DoList(ISessionImplementor session, QueryParameters queryParameters) 

क्या एक में है कि समय समाप्ति का कारण बन सकता है, लेकिन अन्य नहीं? उसी मशीन पर, एक ही समय में चल रहा है (या दूसरे के बाद भी एक दाएं)। मैं भी कोई समय समाप्ति के साथ निर्माण \ बिन \ फ़ोल्डर से स्थानीय स्तर पर इसे चलाने के बाद, बस डिबगर के माध्यम से की तरह है। यह केवल तैनाती प्रति है जो टाइमआउट उत्पन्न करती है।

अद्यतन:
मैं किया गया है में सक्षम कब्जा उत्पादन वातावरण और सब कुछ के लिए एक एसक्यूएल प्रोफाइलर ट्रेस एसक्यूएल करने के लिए डेटाबेस के लिए वास्तविक लिखने है, जो एक पृष्ठभूमि धागे पर होता है के अलावा हो रही है। सहेजने वाली विधि (जिसमें INSERTS और/या UPDATES का संयोजन शामिल हो सकता है) को उस विधि में एक क्वेरी के रूप में देखा जाता है जिसे सहेजने से ठीक पहले चलाया जाता है। मैं अब पूरे अपवाद स्टैक को कैप्चर करने पर काम कर रहा हूं।

अद्यतन 2:
मैं अंत में डीबगर में त्रुटि reproduced है और जहां अपवाद उत्पन्न किया जा रहा है अलग-थलग कर दिया है। जिस प्रश्न का मैंने ऊपर उल्लेख किया है, वह सहेजने से पहले तुरंत होता है, वह टाइमआउट का कारण बनता है। यह अच्छा है, अब मैं इसे ठीक कर सकता हूं और आगे बढ़ सकता हूं।

प्रश्न बनी हुई है, हालांकि: इसे रिलीज कोड चलाने की प्रक्रिया में क्यों फेंक दिया गया था, न कि डीबग प्रक्रिया में सटीक कोड कोड चल रहा था।

+0

शायद आपका तैनाती संस्करण दूसरे डेटाबेस पर इंगित कर रहा है। क्या आप डेटाबेस तक पहुंचने से पहले कनेक्शन स्ट्रिंग (उदाहरण के लिए MessageBox.Show() के साथ) को प्रदर्शित करने के लिए एक कोड जोड़ सकते हैं? – Adi

+0

@Adi मेरे पास ऐप में एक स्क्रीन है जो सभी कनेक्शन जानकारी प्रदर्शित करती है। यह सब वही है, मैंने सत्यापित किया ... – squillman

+0

@ स्किलमैन हम, मैंने कई "अजीब" चीजें देखी हैं और सबसे असंभव चीजें वास्तव में हो रही हैं ... इसलिए जब तक यह करने का एक आसान तरीका है, मैं इसे लागू करूंगा डेटाबेस तक पहुंचने से पहले संदेश बॉक्स। मैं आपको धक्का नहीं देना चाहता, हालांकि ... – Adi

उत्तर

0

मुझे डेटाबेस के संबंध में एक ही समस्या थी।

मैंने अपने उपयोगकर्ताओं से सुना है कि उनके पास बिल्कुल एक ही अपवाद है। शुरुआत में मुझे नहीं पता कि क्या गलत था।

समाधान है कि वे उनकी वीपीएन कुंजी

कनेक्ट नहीं किया है

सादर एडम

+0

धन्यवाद, लेकिन यह सब आंतरिक है। – squillman

1

आप डिबगिंग मोड का उपयोग करते हैं, अनुरोध समय बाहर अनंत है, लेकिन यह मामला जब आप इसे माध्यम से चल रहे हैं नहीं है था प्रकाशित संस्करण।

यदि किसी वेब सेवा को डेटाबेस पर लिखने के लिए बुलाया जा रहा है, तो कृपया अपना अनुरोध समय बढ़ाएं और यदि नहीं, तो अपने वेब.कॉन्फिग में डेटाबेस के लिए अपना कनेक्शन समय बढ़ाएं या जहां भी आपने अपनी कनेक्शन स्ट्रिंग डाली है।

सादर, Vinit

+0

यह एक वेब ऐप नहीं है, यह Winforms है। – squillman

0

आप एक पृष्ठभूमि सूत्र में डेटाबेस है, जो मुझे सुराग इस संगामिति (बहु सूत्रण) मुद्दा किसी भी तरह हो सकता है सोचने के लिए के लिए लिख उल्लेख।

रिलीज बिल्ड आमतौर पर अनुकूलित किए जाते हैं, यही कारण है कि वे डीबग बिल्ड से थोड़ा अलग निष्पादित कर सकते हैं। इससे मौजूदा समवर्ती मुद्दों को वास्तविक समस्या बन सकती है। अलग-अलग उपयोगकर्ताओं के पास अलग-अलग हार्डवेयर होते हैं, सीपीयू कोर (आदि) की विभिन्न संख्याओं के साथ, संभवतः निष्पादन आदेश में सूक्ष्म परिवर्तन होते हैं।

यह सब कोड में गहरी खुदाई के बिना जंगली अनुमान है, लेकिन बहु-थ्रेडिंग अक्सर इन प्रकार की "रहस्यमय" समस्याओं के लिए अपराधी होती है।

संबंधित मुद्दे