Sunday, 15 July 2012

c# - No mapping exists from object type system.io.memorystream to a known managed provider native type, Windows XP only issue -


त्रुटि प्राप्त हो रही है: System.argumentexception: कोई मैपिंग ऑब्जेक्ट प्रकार system.io.memorystream से एक ज्ञात प्रबंधित प्रदाता देशी प्रकार से मौजूद नहीं है।

मेरा कोड Win7-64bit पर ठीक काम करता है, लेकिन WinXP-64bit में नहीं।

त्रुटि तब आती है जब वस्तु को KeyValuePay में पास किया जा रहा है प्रकार या मेमोरीस्ट्रीम और SQL doesn यह कैसे संभाल करने के लिए पता नहीं है।

सवाल में कोड है:

  foreach (keyvaluepair & lt; frmmain.PARAMS, ऑब्जेक्ट & gt; आइटम paramDictionary में) {sqlCMD.Parameters जोड़ें (नया SqlParameter ("@" + item.Key.ToString (), item.Value)); }   

संदर्भ के लिए यह कॉल करने वाला कोड है:

  mStream = frmRptViewer.CryRpt.ExportToStream (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat); शब्दकोश & lt; PARAMS, ऑब्जेक्ट & gt; PdfDictionary = नया शब्दकोश & lt; PARAMS, ऑब्जेक्ट & gt; (); PdfDictionary.Add (PARAMS.TYPE, "PDFSAVE"); PdfDictionary.Add (PARAMS.PDF, एमस्ट्रीम); PdfDictionary.Add (PARAMS.JOBNUMB, नौकरीटैक्सबॉक्स। पाठ); PdfDictionary.Add (PARAMS.LINENUMB, लाइन न्यूटैक्सबॉक्स। पाठ); DBCall.SavePDF (pdfDictionary);    

सबसे अधिक संभावना है कि यह स्ट्रीम वर्गों को नियंत्रित नहीं कर सकता है। आप बाइट [] का उपयोग करने की कोशिश कर सकते हैं, जिसके बजाय MemoryStream आपको आसानी से करने देता है:

  pdfDictionary.Add (PARAMS.PDF, mStream.ToArray ());   

आप रिसाव को रोकने के लिए का उपयोग करके स्ट्रीम को लपेट करना चाहते हैं:

  का उपयोग कर ( मेमोरीस्ट्रीम mStream = frmRptViewer.CryRpt.ExportToStream (CrystalDecisions.Shared.ExportFormatType.PortableDocFormat)) {शब्दकोश & lt; PARAMS, ऑब्जेक्ट & gt; PdfDictionary = नया शब्दकोश & lt; PARAMS, ऑब्जेक्ट & gt; (); PdfDictionary.Add (PARAMS.TYPE, "PDFSAVE"); PdfDictionary.Add (PARAMS.PDF, एमस्ट्रीम); PdfDictionary.Add (PARAMS.JOBNUMB, नौकरीटैक्सबॉक्स। पाठ); PdfDictionary.Add (PARAMS.LINENUMB, लाइन न्यूटैक्सबॉक्स। पाठ); DBCall.SavePDF (pdfDictionary); }    

No comments:

Post a Comment