2010-06-30 41 views
5

Tôi đang cố gắng viết một trang web đơn giản (ASP.NET v4), sẽ gọi Windows Search, tìm một tệp cụ thể và gửi lại cho người dùng. Tôi đã đặt lại với nhau sau đây là một ví dụ: nó gọi là dịch vụ tìm kiếm của Windows trên "RemoteServer", và trả về con đường "somefile.txt":Lỗi mã OLEDB ASP.NET khi được triển khai trên IIS7

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(); 

.. và làm việc này rất lớn trên Visual Studio 2010 môi trường phát triển, "kết quả" chứa đường dẫn đến tệp. Tuy nhiên, nếu tôi triển khai nó đến máy chủ IIS7 cục bộ (chạy trên Máy chủ 2008), tôi nhận được lỗi này:

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. 

Tôi đang thua lỗ để tiếp theo. Tôi cần phải làm gì với IIS7, hoặc mã, hoặc cả hai để làm cho nó hoạt động? Một lần nữa, điều này hoạt động tốt trong VS2010 (thử nghiệm trên cả Windows 7 và Windows 2008 Server).

+0

*** sytelhp.systemindex *** là gì? – Kiquenet

+0

Đó là tên của máy chủ đang chạy mã. Đây là 6 năm trước :) – KenD

Trả lời

3

Tôi đoán bạn đang chạy trên hệ điều hành Vista hoặc cũ hơn và IIS chạy trên máy chủ 2008 hoặc mới hơn? Hãy thử Provider=Search.CollatorDSO.1 (lưu ý .1).

Chỉnh sửa: Bạn nên sử dụng tài khoản người dùng khác để tìm kiếm hoạt động (không phải là "dịch vụ mạng" mặc định mà ứng dụng asp.net chạy dưới). Xem nhận xét để biết thêm thông tin.

+0

Tôi đã thử chạy mã trong Visual Studio 2010 chạy trên cả Windows 7 và Server 2008, và nó chạy tốt trên cả hai. Nó chỉ khi triển khai nó vào IIS trên Server 2008 mà nó rơi xuống. Tôi đã cố gắng thay đổi chuỗi nhà cung cấp (cảm ơn), nhưng nó vẫn cho lỗi "tham số không chính xác": ( – KenD

+0

Provider = RSSearch.CollatorDSO.1; Extended Properties = "Application = RSApp" Nếu nó không hoạt động, sau đó nó có thể là một vấn đề của người sử dụng IIS (chạy các ứng dụng) không có một hồ sơ người dùng (mà sẽ là một giải pháp kỳ lạ IMHO cho một ứng dụng web) Tài khoản mặc định là một tài khoản dịch vụ mạng –

+0

Tất nhiên! Đó là tài khoản Tôi đã thêm mã để mạo danh người dùng và sử dụng tài khoản quản trị miền hiện tại nó hoạt động tốt. Câu hỏi là, vì tôi thực sự không muốn mã chạy với tư cách quản trị viên tên miền, cho phép tài khoản của các mã hoặc quyền truy cập vào cơ sở dữ liệu Windows Search từ xa như thế nào? – KenD

Các vấn đề liên quan