كيف يمكنني الوصول إلى قاعدة البيانات عن طريق المجلد الظاهري الذي يشير في مشاركة بعيدة
-
19-08-2019 - |
سؤال
أواجه مشكلة في الحصول على حق الوصول إلى قاعدة البيانات التي تعيش على ملقم بعيد.
لدي ASP.NET 2.0 صفحة ويب التي تحاول الاتصال بقاعدة بيانات.
يتم الوصول إلى قاعدة البيانات عن طريق مجلد ظاهري (التي أنشئت في IIS).
المجلد الظاهري نقاط في مشاركة بعيدة الذي يحتوي على قاعدة البيانات.
المجلد الظاهري (في تطبيقات الويب الدليل الجذر) هو الإشارة إلى مشاركة على ملقم بعيد عبر مسار UNC:
\\databaseServerName\databaseFolder$\
الافتراضي مجلد 'قراءة' و 'استعراض' permissions مجموعة 'الحقيقية'.
أنا مخزن سلسلة الاتصال في 'appSettings' قسم من شبكة الإنترنت.التكوين:
<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=http://webAppServerName/virtualFolderName/databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>
كائن الاتصال هو declard على بلدي .صفحة aspx:
Dim objConnVirtual As New OleDbConnection(ConfigurationManager.AppSettings("conStrVirtual"))
هنا هو رمز الذي يحاول استخدام كائن الاتصال:
Public Sub Test()
If objConnVirtual.State <> ConnectionState.Open Then
objConnVirtual.Open()
End If
Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM TableName", objConnVirtual)
objDR = cmd.ExecuteReader()
If objDR.Read() Then
response.write("Shazaam! Data shows up here")
End If
objDR.Close()
objConnVirtual.Close()
End Sub
عند تشغيل التعليمات البرمجية أعلاه أحصل على الخطأ التالي (على هذا الخط من التعليمات البرمجية 'objConnVirtual.Open()':
تفاصيل الاستثناء:النظام.البيانات.OleDb.OleDbException:ليس اسم ملف صالح.
لقد راجعت اسم قاعدة البيانات وهو الصحيح (حتى نسخ/لصق للتأكد)
إذا أنا وضعت 'مصدر البيانات' قسم من سلسلة الاتصال في شريط عنوان المتصفح الخاص بي يمكنني بنجاح لرؤية محتويات مشاركة على الملقم البعيد.
لست متأكدا إذا كان هذا هو مشكلة مع أذونات أو مع رمز.
لقد بحثت على حماقة من هذا ولكن لم تكن قادرة على العثور على حل.
أي مساعدة هي موضع تقدير كبير.
المحلول 5
التحديث
أولا شكرا لكل من قدم إجابات.
ومع ذلك, لقد انتهى الأمر لا باستخدام اتصال قواعد البيانات عن بعد عبر المجلد الظاهري' الأسلوب لأن تعقيد الأذونات اللازمة للحصول على هذا العمل كان يسبب لنا مشاكل أكثر مما كان يستحق.نضع UNC مرة أخرى في سلسلة الاتصال التي قد لا تكون أفضل طريقة للقيام بذلك ، ولكن العمل بالنسبة لنا.
نصائح أخرى
عند الوصول إلى البعيد الوصول MDB قاعدة البيانات ، يجب تحديد مسار UNC مثل \ emoteMachine\Share est.mdb.
تأكد من هوية تجمع التطبيق لديه الأذونات المناسبة للاتصال مشاركة بعيدة.بشكل افتراضي على IIS 6 كنت تعمل مع حساب "خدمة الشبكة" ، وهو افتراضيا لا يسمح للوصول إلى مشاركة بعيدة.
فإن أفضل طريقة هي أن السماح AppPool تشغيل مع خدمة مخصصة المستخدم.
ما هو الحساب المستخدمة على الخادم الخاص بك عندما الخاص بك على شبكة الإنترنت التطبيق يحاول قراءة db الملف ؟ أيا كان هذا في حساب المستخدم ، يجب أن يكون لديك أذونات قراءة هذا المجلد/الملف.في IIS6 يمكنك تكوين المجلد الظاهري إلى استخدام أي حساب المستخدم...على علامة التبويب أمان الدليل هناك زر تحرير في إطار المصادقة والتحكم بالوصول.
يبدو من المرجح أن رسالة الخطأ الخاصة بك هو مجرد رسالة خطأ عامة ، الأذونات المشكلة هي القضية الحقيقية.
تأكد من أن ملقمات اثنين الداخلية الوصول إلى بعضها البعض و أيضا تحديد ip & ميناء db server في سلسلة الاتصال الخاصة بك .
التحديث
أود أن أذكر أيضا أنه يعمل على الجهاز الخاص بي (ولكن ليس مرة واحدة تحميل تصل إلى إنتاج مربع) إذا أعلن سلسلة الاتصال في 'appSettings' قسم من شبكة الإنترنت.التكوين مثل هذا:
<add key="conStrVirtual" value="Provider=Microsoft.Jet.OleDb.4.0;Data Source=\\databaseServerName\databaseFolder$\databaseName.MDB;Jet OLEDB:Database Password=dumbPassword;"/>
هذا يجعلني أعتقد أنه يمكن أن يكون مشكلة مع الحاجة إلى استخدام أوراق اعتماد المجال غير المحلية IUSER الحساب.