Ciao a tutti,
ho sviluppatto un piccolo crm che genere delle offrte in asp.net utlizzando vs2010

Ho il seguente problema, quando l'utente seleziona un articolo da una dropdownlist in alcune text compaiono i dati dell'articolo scelto, nome, prezzo di listino, prezzo unitario, l'utente può inserire uno sconto o maggiorazione in una text e quando perde lo stato attivo richiamo una routine che mi controlla tramite 3 banalissime query sul db se lo sconto o maggiorazione è permesso oppure no.
Questo controllo in locale è istantaneo (nemmeno 1 secondo), mentre quando carico il sito online risulta molto lento, a volte impiega anche ben 8 secondi!

Ho pubblicato l'applicazione su un server di aruba, ho chiesto a loro supporto e questo è quello emerso:
-gli ho fatto fare le mie stesse identiche prove e per loro il postback risulta istantaneo e senza dover aspettare 8 secondi (loro mi hanno assicurato che hanno fatto il test con una rete esterna da dove è ospitato il server utilizzando un ADSL da 8 mb)
-io ho fatto le prove sia dal mio cliente che nel mio ufficio, entrambi abbiamo una adsl da 10mb e il postback risulta molto lento
-per scrupolo ho fatto la prova a casa di un mio amico che abita nel paese a fianco al mio e che per fortuna sua ha già la fibra ottica e il postback risulta immediato.
-ho fatto una prova collegando il mio pc alla rete del mio cellulare che è oltre i 20 mb e il postback risulta veloce!

Non so più in che modo risolvere questo problema, ho escluso un problema di antivirus perchè le prove che ho fatto ho sempre usato lo stesso portatile con lo stesso antivirus, l'unica cosa che cambiava era l'ADSL!!!!

E' possibile che se uno non ha una fibra ottica il post back sia così tanto lento? ripeto ben 8 secondi!!!

Qualcuno ha delle idee da suggerirmi??

Di seguito vi posto il codice della pagina, la funzione OnSelectedIndexChanged2 è quella che controlla che il prezzo non sia stato scontato o maggiorato troppo.

Ho provato anche a eseguire la routine cancellando le 3 query per vedere se fosse un problema di collegamento a sql server, ma il risultato non cambia...

Accetto qualsiasi consiglio, sto diventando pazzo!!!

Grazie

Ciao

codice:
Protected Sub OnTextChanged2(ByVal sender As Object, ByVal e As EventArgs)
        Dim txt As TextBox = DirectCast(sender, TextBox)
        Dim ID As String = ""

        lbl_error.Text = ""

        Dim C As Integer
        Dim sTmp As String = ""
        For C = 0 To Len(txt.ID)
            If IsNumeric(Mid(txt.ID, C + 1, 1)) Then
                sTmp = sTmp & Mid(txt.ID, C + 1, 1)
            End If
        Next

        ID = sTmp

        Dim txt1 As TextBox = Master.FindControl("MainContent").FindControl("listino" & ID)
        Dim txt2 As TextBox = Master.FindControl("MainContent").FindControl("sconto" & ID)
        Dim txt3 As TextBox = Master.FindControl("MainContent").FindControl("maggiorazione" & ID)
        Dim txt4 As TextBox = Master.FindControl("MainContent").FindControl("netto_unt" & ID)
        Dim txt5 As TextBox = Master.FindControl("MainContent").FindControl("riepilogativo_unt" & ID)

        Dim listino As Double
        Dim maggiorazione As Double
        Dim sconto As Double

        If IsNumeric(txt1.Text) Then
            listino = txt1.Text
        Else
            listino = 0
        End If

        If IsNumeric(txt2.Text) Then
            sconto = txt2.Text
        Else
            sconto = 0
        End If

        If IsNumeric(txt3.Text) Then
            maggiorazione = txt3.Text
        Else
            maggiorazione = 0
        End If

        txt4.Text = listino - (((listino) / 100) * sconto) + (((listino) / 100) * maggiorazione)
        txt5.Text = listino - (((listino) / 100) * sconto) + (((listino) / 100) * maggiorazione)






        Dim ddl_ctl As DropDownList = Master.FindControl("MainContent").FindControl("ddl_articolo" & ID)
        Dim riepilogativo_unt_ctl As TextBox = txt5
        Dim combo_ctl As DropDownList = Master.FindControl("MainContent").FindControl("ddl_articolo" & ID)

        If ddl_ctl.SelectedValue = "" Then
            lbl_error.Visible = "True"
            lbl_error.Text = "Devi selezionare l'articolo"
            Exit Sub
        End If

        If riepilogativo_unt_ctl.Text = "" Then
            Exit Sub
        End If


        'CONTROLLO IL PREZZO RIEP UNT SIA MAGGIORE UGUALE AL LISTINO

        Dim listino_ctl As String = ""

        Select Case ddl_Listino.SelectedValue

            Case "PR"
                listino_ctl = "PR"

            Case "1"
                listino_ctl = "2"

            Case "2"
                listino_ctl = "2"

            Case "11"
                listino_ctl = "12"

            Case "12"
                listino_ctl = "12"

            Case "21"
                listino_ctl = "22"

            Case "22"
                listino_ctl = "22"

            Case "31"
                listino_ctl = "32"

            Case "32"
                listino_ctl = "32"

            Case "36"
                listino_ctl = "37"

            Case "37"
                listino_ctl = "37"

            Case "41"
                listino_ctl = "42"

            Case "42"
                listino_ctl = "42"

        End Select

        Dim SQL As String
        Dim Sqlconn As New SqlConnection(ConfigurationManager.ConnectionStrings("dbConnectionString_usa").ToString)
        Try
            Sqlconn.Open()

            If europa.Value = "1" Then
                SQL = "Select Price FROM MA_ItemsPriceLists WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='" & listino_ctl & "'"
            Else
                SQL = "Select Price FROM MA_ItemsPriceLists_usa WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='" & listino_ctl & "'"
            End If

            Dim ctl_listino As Boolean = True

            Dim cmd As New SqlCommand
            cmd.Connection = Sqlconn
            cmd.CommandText = SQL
            Dim dr As SqlDataReader = (cmd.ExecuteReader)


            If dr.HasRows Then
                'si sposta ciclicamente attraverso i record e visualizza i valori.
                Do While dr.Read


                    If riepilogativo_unt_ctl.Text < dr("Price") Then
                        lbl_error.Visible = "True"
                        lbl_error.Text = "Riepilogativo unt. pi&ugrave; basso del Listino associato"
                        Exit Sub
                    End If

                    ctl_listino = True

                Loop


            End If

            dr.Close()

            cmd.Dispose()

            If ctl_listino = False Then
                If europa.Value = "1" Then
                    SQL = "Select Price FROM MA_ItemsPriceLists WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='21'"
                Else
                    SQL = "Select Price FROM MA_ItemsPriceLists_usa WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='21'"
                End If


                cmd = New SqlCommand
                cmd.Connection = Sqlconn
                cmd.CommandText = SQL
                dr = cmd.ExecuteReader


                If dr.HasRows Then
                    'si sposta ciclicamente attraverso i record e visualizza i valori.
                    Do While dr.Read

                        If riepilogativo_unt_ctl.Text < dr("Price") Then
                            lbl_error.Visible = "True"
                            lbl_error.Text = "Riepilogativo unt. pi&ugrave; basso del Listino associato"
                            Exit Sub
                        End If

                    Loop


                End If

                dr.Close()
                cmd.Dispose()



            End If





            'CONTROLLO CHE IL PREZZO NON SIA SUPERIORE AL LISTINO PR
            If europa.Value = "1" Then
                SQL = "Select Price FROM MA_ItemsPriceLists WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='21'"
            Else
                SQL = "Select Price FROM MA_ItemsPriceLists_usa WHERE Item='" & combo_ctl.SelectedValue & "' and PriceList='21'"
            End If


            cmd = New SqlCommand
            cmd.Connection = Sqlconn
            cmd.CommandText = SQL
            dr = cmd.ExecuteReader


            If dr.HasRows Then
                'si sposta ciclicamente attraverso i record e visualizza i valori.
                Do While dr.Read

                    If riepilogativo_unt_ctl.Text > dr("Price") Then
                        lbl_error.Visible = "True"
                        lbl_error.Text = "Riepilogativo unt. pi&ugrave; alto del Listino PR"
                        Exit Sub
                    End If

                Loop


            End If

            dr.Close()
            cmd.Dispose()

        Catch ex As Exception
            FailureText.Text = ex.Message
            Exit Sub
        Finally
            Sqlconn.Close() 'chiude la connessione
            Sqlconn.Dispose() 'rilascia le risorse
            SqlConnection.ClearPool(Sqlconn) ' pulisce il pool delle connessione associate all'oggetto connection 
        End Try



    End Sub