5

我正在尝试编写一个简单的网站(ASP.NET v4),它将调用 Windows Search,查找特定文件并将其返回给用户。我整理了以下示例:它调用“remoteserver”上的 Windows Search 服务,并返回“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 服务器(在 Server 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 上测试)。

4

1 回答 1

3

我猜你是在 Vista 或更旧的操作系统上运行,而 IIS 在 2008 Server 或更高版本上运行?尝试Provider=Search.CollatorDSO.1(注意.1)。

编辑:您应该使用不同的用户帐户进行搜索(而不是运行 asp.net 应用程序的默认“网络服务”)。有关更多信息,请参阅评论。

于 2010-06-30T17:16:51.530 回答