We help IT Professionals succeed at work.

Translate to ASP.NET v2, please

Medium Priority
Last Modified: 2013-11-25
Hello - I found a promising code sample for adding search capability to an ASP.NET website: "How to use an ASP.NET application to query an Indexing Service catalog by using Visual Basic .NET" ( http://support.microsoft.com/default.aspx?scid=kb;en-us;820105#kb1 )

It's in ASP.NET v1; I caught all the easy things, and made all the changes suggested by the debugger, but it's still getting an error down on the line:   cmd.Fill(testDataSet)

I'm new to ASP.NET alltogether, much less v1 vs v2; I would appreciate it if somebody could translate this to v2

Here's the HTML:

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="IndexQueryApp.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
            <title>Query an Indexing Service Catalog</title>
            <meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.0">
            <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
            <meta name="vs_defaultClientScript" content="JavaScript">
            <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
      <body MS_POSITIONING="GridLayout">
            <form id="Form1" method="post" runat="server">
                  <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 238px; POSITION: absolute; TOP: 76px" runat="server"></asp:TextBox>
                  <asp:DataGrid id="DataGrid1" style="Z-INDEX: 102; LEFT: 153px; POSITION: absolute; TOP: 127px"
                        runat="server" AutoGenerateColumns="False">
                              <asp:BoundColumn DataField="DocTitle" HeaderText="DocTitle"></asp:BoundColumn>
                              <asp:BoundColumn DataField="filename" HeaderText="FileName"></asp:BoundColumn>
                              <asp:BoundColumn DataField="size" HeaderText="Size"></asp:BoundColumn>
                              <asp:BoundColumn DataField="path" HeaderText="PATH"></asp:BoundColumn>
                              <asp:BoundColumn DataField="url" HeaderText="URL "></asp:BoundColumn>
                  <asp:Button id="Button1" style="Z-INDEX: 103; LEFT: 638px; POSITION: absolute; TOP: 145px" runat="server"

Here's the code:

Public Class WebForm1
   Inherits System.Web.UI.Page
   Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
   Protected WithEvents Button1 As System.Web.UI.WebControls.Button
   Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
   Protected WithEvents DataGrid1 As System.Web.UI.WebControls.DataGrid

#Region " Web Form Designer Generated Code "

   'Web Form Designer requires this call.
   <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
      Me.OleDbConnection1 = New System.Data.OleDb.OleDbConnection()

   End Sub

   Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
      'CODEGEN: Web Form Designer requires this method call.
      'Do not modify it by using the code editor.
   End Sub

#End Region

   Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

   End Sub

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
      Dim strCatalog As String

      ' Catalog Name
      strCatalog = "TestCatalog"

      Dim strQuery As String
      strQuery = "Select DocTitle,Filename,Size,PATH,URL from SCOPE() where FREETEXT('" & TextBox1.Text & "')"
      ' TextBox1.Text is word that you type in the text box to query by using Index Service.
      Dim connString As String = "Provider=MSIDXS.1;Integrated Security .='';Data Source='" & strCatalog & "'"

      Dim cn As New System.Data.OleDb.OleDbConnection(connString)
      Dim cmd As New System.Data.OleDb.OleDbDataAdapter(strQuery, cn)
      Dim testDataSet As New DataSet()


      ' Bind DataGrid to the DataSet. DataGrid is the ID for the
      ' DataGrid control in the HTML section.
      Dim source As New DataView(testDataSet.Tables(0))
      DataGrid1.DataSource = source
   End Sub
End Class



Watch Question


whats the error?

from what i know, lol, asp vs 2.0 is backwards compatible with 1.1 and 1.0 applications


When I enter a value in the text box and click the "Button", it eventually comes up in the debugger on the line with:
with the messages:
      "OleDbException was unhandled by user code", "Service is not running"

As far as backward compatibility, I don't think there is any, at least within Visual Web Developer (which I am using). At one point, I was getting a message along the lines of "{no longer supported... open the project in Visual Web Developer}"  

I made the following changes to the HTML:
> There were evidently no Master/Content pages in v1; I brought in the controls between the <form> tags in to a new content page (still named "WebForm1"), and left everything else (<meta> spec's, "MS_POSITIONING", etc.) out.
> Changed "CodeBehind" to "CodeFile"  
> Removed all the "style="Z-INDEX: " spec's

In the code, I followed the recommendations from the debugger (or else took a chance):
> Removed all the "Protected WithEvents" except for the one for "OleDbConnection1"
> Removed the #Region section
> Removed the Page_Load sub (nothing in it)
> Changed "Dim testDataSet As New DataSet()" to "Dim testDataSet As New Data.DataSet()"
> Changed "Dim source As New DataView(testDataSet.Tables(0))" to "Dim source As New Data.DataView(testDataSet.Tables(0))"

I know even less about VB.NET than I do ASP.NET, at this point; hopefully, the problem is something simple/syntactical on that line "cmd.Fill(testDataSet)"

Thanks in advance for your help


>>"OleDbException was unhandled by user code", "Service is not running"
this means you have not started the indexing service.

from http://support.microsoft.com/default.aspx?scid=kb;en-us;820105#kb1  (same link from your question)
do the following

Create a test folder
1. Create a new folder on the C drive of your computer. Name the folder myCatalogFolder.
2. Start Notepad, and then paste the following text in a blank document:
This is test document to test the index server query and this file name is IndexText.text.
3. Save the file as C:\myCatalogFolder\IndexText.txt.

 Back to the top

Create an Indexing Service catalog
1. Click Start, and then click Control Panel.
2. Double-click Administrative Tools.
3. Click Computer management.
4. Expand Services and Applications.
5. Right-click Indexing Service, point to New, and then click Catalog.  
6. In the Name text box, type TestCatalog.
7. Click Browse, locate the folder where you want to put the catalog, and then click OK two times.
8. Following message appears under New Catalog Created:
Catalog will remain off-line until Indexing Service is restarted
Click OK.
9. Right-click Indexing Service, and then click Stop to stop the Indexing Service.
10. Right-click Indexing Service, and then click Start to restart the Indexing Service.

 Back to the top

Define the scope of the catalog
After you create a new catalog, add the folders that you want included in the scope of the catalog. The scope is the set of folders that is included in and excluded from the catalog. The scope defines the content that is included and excluded from the index. For each folder that is included or excluded, all its subfolders are also included or excluded. 1. Double-click TestCatalog (the catalog that you created in the "Create a Test Folder" section).
2. Right-click Directories, point to New, and then click Directory.
3. Click Browse, locate and then click the folder that you want to add (C:\myCatalogFolder\), and then click OK.

Note Under Include in Index ?, click Yes.

Not the solution you were looking for? Getting a personalized solution is easy.

Ask the Experts


Argh! It dawned on me what the problem is/was, about the same instant I got your reply.

Then, FWIW, I realized I needed to change strCatalog to be the actual catalog name

It's working now...

Thank you

Access more of Experts Exchange with a free account
Thanks for using Experts Exchange.

Create a free account to continue.

Limited access with a free account allows you to:

  • View three pieces of content (articles, solutions, posts, and videos)
  • Ask the experts questions (counted toward content limit)
  • Customize your dashboard and profile

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.