سؤال

أحاول كتابة موقع ويب بسيط (ASP.NET V4) ، والذي سيتصل بالبحث عن Windows ، والعثور على ملف معين وإعادته إلى المستخدم. لقد قمت بتجميع ما يلي كمثال: إنها تستدعي خدمة البحث في Windows على "Remoteserver" ، وتُرجع مسار "SomeFile.txt":

OleDbConnection conn = new OleDbConnection();

conn.ConnectionString = "Provider=Search.CollatorDSO;Extended Properties='Application=Windows';";

OleDbCommand cmd = conn.CreateCommand();


cmd.CommandText = string.Format(
            "SELECT System.ItemPathDisplay, System.ItemType FROM " +
            " sytelhp.systemindex WHERE SCOPE='file://remoteserver/archive' AND CONTAINS(\"System.FileName\", " +
            " '\"*{0}*\"')", "somefile.txt");


conn.Open();

OleDbDataReader rdr = cmd.ExecuteReader();

string result=rdr[0].ToString();

.. وهذا يعمل بشكل رائع في بيئة تطوير Visual Studio 2010 ، "النتيجة" تحتوي على المسار إلى الملف. ومع ذلك ، إذا قمت بنشره على خادم IIS7 المحلي (الذي يعمل على الخادم 2008) ، أحصل على هذا الخطأ:

The parameter is incorrect. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.OleDb.OleDbException: The parameter is incorrect.

أنا في حيرة أين أذهب بعد ذلك. ما الذي يجب علي فعله إلى IIS7 ، أو الرمز ، أو كليهما للعمل؟ مرة أخرى ، يعمل هذا بشكل جيد ضمن VS2010 (تم اختباره على كل من Windows 7 و Windows 2008 Server).

هل كانت مفيدة؟

المحلول

أعتقد أنك تعمل على نظام التشغيل Vista أو نظام التشغيل الأقدم ويعمل IIS على خادم 2008 أو أحدث؟ محاولة Provider=Search.CollatorDSO.1 (لاحظ ال .1).

يحرر: يجب عليك استخدام حساب مستخدم مختلف للبحث عن العمل (وليس "خدمة الشبكة" الافتراضية التي يتم تشغيل تطبيق ASP.NET). انظر التعليقات لمزيد من المعلومات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top