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ù 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ù 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ù 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

Rispondi quotando
