Click here to Skip to main content
15,867,756 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I am tying to read my webconfig file and display in an telerik radgrid.

On page load I am calling this first

VB
Private Sub GetAppSettings()
        'Returns a dataset of Application And connection config settings
        SectionsTabStrip.Tabs.Item(1).Visible = True
        Dim dsAppSettings As New DataSet
        Dim dsAppCfg As New DataSet

        'Get App section settings
        Dim datAppSettings As New DataTable
        Dim column As DataColumn
        Dim row As DataRow
        'Add Key Column
        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "Key"
        datAppSettings.Columns.Add(column)
        'Add Value Column
        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "Value"
        datAppSettings.Columns.Add(column)

        Dim PrimaryKeyColumns(0) As DataColumn
        PrimaryKeyColumns(0) = datAppSettings.Columns("Key")
        datAppSettings.PrimaryKey = PrimaryKeyColumns

        For index As Integer = 1 To ConfigurationManager.AppSettings.Count
            row = datAppSettings.NewRow()
            row("Key") = ConfigurationManager.AppSettings.GetKey(index - 1)
            row("Value") = ConfigurationManager.AppSettings(index - 1)
            datAppSettings.Rows.Add(row)
        Next

        'Get Connection settings
        'Add Name Column
        Dim datCfgSettings As New DataTable
        '2nd table

        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "Name"
        datCfgSettings.Columns.Add(column)
        '2nd table
        'Add connectionString Column
        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "connectionString"
        datCfgSettings.Columns.Add(column)
        '2nd table

        Dim PrimaryKeyColumns1(0) As DataColumn
        PrimaryKeyColumns1(0) = datCfgSettings.Columns("Name")
        datCfgSettings.PrimaryKey = PrimaryKeyColumns1
        '2nd table
        Dim line As String

        Dim connections As ConnectionStringSettingsCollection = ConfigurationManager.ConnectionStrings
        If connections.Count <> 0 Then
            For Each connection As ConnectionStringSettings In connections
                Dim name As String = connection.Name
                Dim provider As String = connection.ProviderName
                Dim connectionString As String = connection.ConnectionString

                row = datCfgSettings.NewRow()
                row("Name") = name.Trim()
                line = connection.ConnectionString.Trim()
                If connection.ConnectionString.ToUpper.Contains("Password=".ToUpper) Then
                    Dim index As Integer = 0
                    Dim index2 As Integer = 0
                    Dim passlen As Integer
                    Dim pass As String

                    index = line.ToUpper.IndexOf("Password=".ToUpper)
                    index2 = line.Length
                    passlen = index2 - (index + 9)
                    pass = line.Substring(index + 9, passlen)
                    line = Regex.Replace(line, pass, "******")
                End If
                row("connectionString") = line
                datCfgSettings.Rows.Add(row)
            Next
        Else
            row = datCfgSettings.NewRow()
            row("Name") = "None"
            row("connectionString") = "None"
            datCfgSettings.Rows.Add(row)
        End If

        dsAppSettings.Tables.Add(datAppSettings)
        dsAppCfg.Tables.Add(datCfgSettings)

        AppSettingsGrid.DataSource = dsAppSettings
        AppSettingsGrid.DataBind()
        AppSettingsGrid.Visible = True

        AppConnSettingsGrid.DataSource = dsAppCfg
        AppConnSettingsGrid.DataBind()
        AppConnSettingsGrid.Visible = True

        ' mail Settings
        Dim mailConfig As System.Configuration.Configuration
        mailConfig = WebConfigurationManager.OpenWebConfiguration(_configpath)
        Dim mailSettings As MailSettingsSectionGroup
        mailSettings = mailConfig.GetSectionGroup("system.net/mailSettings")

        Dim datMailTable As New DataTable
        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "Key"
        datMailTable.Columns.Add(column)
        column = New DataColumn()
        column.DataType = Type.GetType("System.String")
        column.ColumnName = "Value"
        datMailTable.Columns.Add(column)

        row = datMailTable.NewRow
        row("Key") = "Host"
        row("Value") = mailSettings.Smtp.Network.Host.ToString
        datMailTable.Rows.Add(row)

        row = datMailTable.NewRow
        row("Key") = "Port"
        row("Value") = mailSettings.Smtp.Network.Port.ToString
        datMailTable.Rows.Add(row)

        row = datMailTable.NewRow
        row("Key") = "Username"
        row("Value") = mailSettings.Smtp.Network.UserName.ToString
        datMailTable.Rows.Add(row)

        Dim dsmail As DataSet = New DataSet
        dsmail.Tables.Add(datMailTable)
        MailSettingsGrid.DataSource = dsmail
        MailSettingsGrid.DataBind()
        MailSettingsGrid.Visible = True
    End Sub


Then when I click get appconfig button .
It needs to load into another RadGrid.

VB
Private Sub btnGetAppConfig_Click(ByVal sender As Object, ByVal e As EventArgs) Handles GetAppConfigButton.Click
        ' Declarations  
        Dim objStreamReader As New StreamReader(Server.MapPath("../web.config"))
        Dim arrText As New ArrayList

        Dim index As Integer = 0
        'beginning place of the password
        Dim index2 As Integer = 0
        'ending place of the password
        Dim passlen As Integer
        Dim line As String
        Dim pass As String

        ' Loop through the file and add each line to the ArrayList  
        Do While objStreamReader.Peek() >= 0
            'arrText.Add(objStreamReader.ReadLine)
            line = objStreamReader.ReadLine

            If line.ToUpper.Contains("password=".ToUpper) Then
                index = line.ToUpper.IndexOf("password=".ToUpper)

                If line.Contains("network host") Then 'This is because the format on this line is password="asdf" rather than Password=asdf"
                    index2 = line.IndexOf("""", index + 10)
                Else : index2 = line.IndexOf("""", index)
                End If

                passlen = index2 - (index + 9)
                '9 is the length of Password=
                pass = line.Substring(index + 9, passlen)
                line = Regex.Replace(line, pass, "******")
            End If
            arrText.Add(line)
        Loop

        ' Close the reader  
        objStreamReader.Close()

        ' Bind the results to the GridView  
        AppWebConfigDataGrid.DataSource = arrText
        AppWebConfigDataGrid.DataBind()
        AppWebConfigDataGrid.Visible = True
        AppConfigPanel.Visible = True
        GetAppConfigButton.Visible = False
        ClearButton.Visible = True
    End Sub


I am getting am getting this error. an item with the same key has already be added. I have 4 grids that display different things on the same page.

After research I finding in the webconfig file as a bunch of
<clear/>
and this is the duplicate
How to fix this.
Posted
Updated 2-Mar-14 11:33am
v2
Comments
Aravindba 2-Mar-14 22:54pm    
hi u r try to add key and value dynamically in web config file ?
The_Inventor 4-Mar-14 5:44am    
Check for matching '<'clear'>' ... '<'/clear'>'

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900