ينشئ OLEDBConnection.Open () "خطأ غير محدد"

لدي تطبيق يقوم بتحميل ملف Excel .xls إلى نظام الملفات ، ويفتح الملف بكائن oledbconnection باستخدام طريقة .open() على مثيل الكائن ثم يقوم بتخزين البيانات في قاعدة بيانات. إن تحميل الملف وكتابته إلى نظام الملفات يعمل بشكل جيد ولكنني أتلقى خطأ عند محاولة فتح الملف على خادم الإنتاج فقط . يعمل التطبيق بشكل جيد على خوادم أخرى (خوادم التطوير والاختبار).

ينشئ التعليمة البرمجية التالية "خطأ غير محدد" في Exception.Message.

على اقتباس: </قوي>

        System.Data.OleDb.OleDbConnection x = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + location + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
        try
        {
            x.Open();
        }
        catch (Exception exp)
        {
            string errorEmailBody = " OpenExcelSpreadSheet() in Utilities.cs.  " + exp.Message;
            Utilities.SendErrorEmail(errorEmailBody);
        }

: عرض الأسعار

يقوم c: \\ temp و c: \ Documents و Settings \\ aspnet \ local settings \ temp folder بالسيطرة الكاملة على \ aspnet.

أعتقد أن هناك نوعًا ما من مشكلات الأذونات ولكن لا يبدو أن هناك أي اختلاف بين الأذونات على المجلدات التي تم تسجيلها والمجلد/المجلد حيث يتم تحميل ملف Excel. يتم استخدام نفس الموقع لحفظ الملف وفتحه وتعمل الطرق على محطة العمل الخاصة بي وخادمين على الويب. خوادم ويندوز 2000 SP4.

0
وأضاف تحرير
الآراء: 1

6 إجابة

أي شيء في الاستثناء الداخلي؟ هل هذا تطبيق 64 بت؟ لا يعمل موفرو OLEDB في 64 بت. يجب أن يكون لديك تطبيقك المستهدف x86. العثور على هذا عند الحصول على خطأ في محاولة لفتح DB الوصول على جهاز الكمبيوتر 64 بت بلدي.

0
وأضاف

نعم. أنا فعلت هذا أيضا. أخرجت IMEX = 1 ، أخرجت خصائص موسعة ، إلخ. تمكنت من كسرها على خوادم dev واختبار. :) أضع تلك مرة واحدة في كل مرة حتى تم إصلاحه على ديف واختبار مرة أخرى ولكن لا يوجد حتى workie على همز.

0
وأضاف

إذا كنت تستخدم انتحال الهوية ، فستحتاج إلى منح إذن لمستخدم انتحال الهوية بدلاً من/بالإضافة إلى مستخدم aspnet.

0
وأضاف

لقد حصلت على هذا الخطأ على شيء الأذونات ، ولكن يبدو أنك قد غطت ذلك. كما أنني قد رأيته مع أحد الأعلام في سلسلة الاتصال - قد تلعب بهذا قليلاً.

0
وأضاف
هل حقا؟ هذه الاجابة حل مشكلتك؟
وأضاف المؤلف juan, مصدر

حاول التفاف الموقع في علامات اقتباس مفردة

System.Data.OleDb.OleDbConnection x = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + location + "';Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'");
0
وأضاف

في حين أن مشكلة الأذونات قد تكون أكثر شيوعًا ، يمكنك أيضًا مواجهة هذا الخطأ من حدود اتصال نظام Windows/System Jet Access Engine ، 64/255 على ما أظن. إذا قمت بتمزيق الاتصالات المتزامنة للقراءة/الكتابة 255 Access أو حد الاتصال 64 (؟) لكل عملية ، فيمكنك الحصول على نفس الخطأ بالضبط. على الأقل ، صادفت ذلك في تطبيق يتم فيه إنشاء الاتصالات باستمرار وعدم إغلاقها بشكل صحيح. سقط Conn.close() ؛ بسيطة ، وكانت الحياة جيدة. أتخيل يمكن أن يكون Excel مشاكل مماثلة.

0
وأضاف
كملاحظة جانبية: يبدو أن Conn.Dispose() لا يغلق الاتصال.
وأضاف المؤلف Residuum, مصدر