在IIS7上部署ASP.NET OLEDB代码时会中断

时间:2010-06-30 16:59:23

标签: asp.net oledb windows-search

我正在尝试编写一个简单的网站(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上都经过测试)。

1 个答案:

答案 0 :(得分:3)

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

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