2013-06-14 6 views
5

वर्तमान में हम जब हमारे विंडोज Azure App का उपयोग (लॉग से) निम्न त्रुटि का सामना कर रहे:क्रमबद्धता त्रुटि (अभी तक) के रूप में न सुलझा हुआ

System.Runtime.Serialization.SerializationException Assembly 'EntityFrameworkDynamicProxies-Marriott.emergePortal.Common, 
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not found. 

यह त्रुटि आते-जाते रहने हम समझ नहीं पा रहे हैं वास्तव में इसका कारण क्या है।

हमने सब कुछ करने की कोशिश की है! कोई भी मदद जो कोई भी प्रदान कर सकता है वह शानदार होगा।

लॉग से पूरे त्रुटि संदेश है:

System.Web.HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown. ---> System.Runtime.Serialization.SerializatioFnException: Assembly 'EntityFrameworkDynamicProxies-Marriott.emergePortal.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not found. 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns) 
    at ReadArrayOfPropertyEnrollmentFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract) 
    at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns) 
    at ReadArrayOfPropertyEnrollmentFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[]) 
    at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns) 
    at ReadArrayOfanyTypeFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString , XmlDictionaryString , CollectionDataContract) 
    at System.Runtime.Serialization.CollectionDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns) 
    at ReadSerializableSessionStateStoreDataFromXml(XmlReaderDelegator , XmlObjectSerializerReadContext , XmlDictionaryString[] , XmlDictionaryString[]) 
    at System.Runtime.Serialization.ClassDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context) 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserializeInSharedTypeMode(XmlReaderDelegator xmlReader, Int32 declaredTypeID, Type declaredType, String name, String ns) 
    at System.Runtime.Serialization.XmlObjectSerializerReadContextComplex.InternalDeserialize(XmlReaderDelegator xmlReader, Type declaredType, String name, String ns) 
    at System.Runtime.Serialization.NetDataContractSerializer.InternalReadObject(XmlReaderDelegator xmlReader, Boolean verifyObjectName) 
    at System.Runtime.Serialization.XmlObjectSerializer.ReadObjectHandleExceptions(XmlReaderDelegator reader, Boolean verifyObjectName, DataContractResolver dataContractResolver) 
    at System.Runtime.Serialization.XmlObjectSerializer.ReadObject(XmlDictionaryReader reader) 
    at Microsoft.ApplicationServer.Caching.NetDataContractCacheObjectSerializer.Deserialize(Stream stream) 
    at Microsoft.ApplicationServer.Caching.DataCacheObjectSerializationProvider.DeserializeUserObject(Byte[][] serializedData, ValueFlagsVersion flagsType) 
    at Microsoft.ApplicationServer.Caching.SocketClientProtocol.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle, String region, Boolean lockKey, IMonitoringListener listener) 
    at Microsoft.ApplicationServer.Caching.DataCache.<>c__DisplayClass8a.<GetAndLock>b__89() 
    at Microsoft.ApplicationServer.Caching.DataCache.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle) 
    at Microsoft.Web.DistributedCache.DataCacheForwarderBase.<>c__DisplayClass31`1.<PerformCacheOperation>b__30() 
    at Microsoft.Web.DistributedCache.DataCacheRetryWrapper.PerformCacheOperation(Action action) 
    at Microsoft.Web.DistributedCache.DataCacheForwarderBase.GetAndLock(String key, TimeSpan timeout, DataCacheLockHandle& lockHandle) 
    at Microsoft.Web.DistributedCache.BlobBasedSessionStoreProvider.GetItem(HttpContextBase context, String id, Boolean acquireWriteLock, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) 
    at Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider.GetItemExclusive(HttpContext context, String id, Boolean& locked, TimeSpan& lockAge, Object& lockId, SessionStateActions& actions) 
    at System.Web.SessionState.SessionStateModule.GetSessionStateItem() 
    at System.Web.SessionState.SessionStateModule.PollLockedSessionCallback(Object state) 
    at System.Web.SessionState.SessionStateModule.EndAcquireState(IAsyncResult ar) 
    at System.Web.HttpApplication.AsyncEventExecutionStep.OnAsyncEventCompletion(IAsyncResult ar) 

उत्तर

2

कोड के किसी भी देखकर बिना, यह निवारण करने के लिए मुश्किल है। हालांकि, हमारे पास ऐसा कुछ ऐसा था जो डेटा कारण नहीं था क्योंकि DataContractSerializer ने एक विशिष्ट प्रकार (जैसा कि सेवा इंटरफ़ेस में परिभाषित किया गया) की अपेक्षा की थी, लेकिन इसके बजाय EntityFramework प्रॉक्सी प्रकार प्राप्त करना था।

हमने इसे हल करने के लिए डेटा ट्रांसफर ऑब्जेक्ट पैटर्न का उपयोग करने का निर्णय लिया। हमने बेस क्लास बनाए जो सरल डेटा ट्रांसफर ऑब्जेक्ट्स थे। ईएफ-जागरूक वर्ग इनसे प्राप्त होते हैं और दृढ़ता से संबंधित तर्क जोड़ते हैं।

ये डीटीओ ऑब्जेक्ट्स आईसीएलनेबल (या कुछ समान) लागू करते हैं जो हमें सेवा स्तर पर सीरिएलाइज़र को ऑब्जेक्ट भेजने से पहले आसानी से इकाई फ्रेमवर्क प्रॉक्सी कक्षाओं की डेटा स्थानांतरण प्रतियां बनाने की अनुमति देता है।

एक कस्टम धारावाहिक बनाने के द्वारा इसे हल करना भी संभव हो सकता है जिसमें एंटीटी फ्रेमवर्क प्रॉक्सी कक्षाओं का ज्ञान है लेकिन यह दृष्टिकोण एक हैक की तरह लग रहा था। डीटीओ पैटर्न सरल लग रहा था और बहुत प्रभावी था।

+0

सुझाव के लिए धन्यवाद, ऐसा लगता है कि इसमें एक महत्वपूर्ण कोड रिफैक्टर शामिल होगा। क्या यह संभव है कि यह माइक्रोसॉफ्ट के कोड के साथ सिर्फ एक समस्या है? – Trevor

+1

यह संभव है। हम विंडोज़ एज़ूर का उपयोग नहीं कर रहे थे, इसलिए यह Azure के लिए कुछ विशिष्ट हो सकता है। जबकि माइक्रोसॉफ्ट का कोड सही नहीं है, मुझे लगता है कि मेरा खनन कम भी सही होता है और आमतौर पर बग आमतौर पर बनाए जाते हैं। –

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