konto usunięte

Temat: Problem, choć brak błędu

Mam taki kod:
string tytul = textBox1.Text;
string slowa = textBox2.Text;
string opis = richTextBox1.Text;

SQLiteConnection sql_polaczenie = new SQLiteConnection("Data Source=data.db;Version=3;New=False;Compress=False");
sql_polaczenie.Open();
progressBar1.Value = 0;
try
{
int ilosc = Convert.ToInt32(label6.Text);
string adres = textBox3.Text;
progressBar1.Maximum = ilosc;
for (int i = 0; i < ilosc; i++)
{
SQLiteCommand cmds = new SQLiteCommand("select slowo from slowa order by random() limit 1", sql_polaczenie);
SQLiteDataReader sql_czytnik = cmds.ExecuteReader();
sql_czytnik.Read();
string title = Convert.ToString(sql_czytnik["slowo"]);


SQLiteCommand cmd = new SQLiteCommand("select zdanie from zdania order by random() limit @ilosc", sql_polaczenie);
cmd.Parameters.Add(new SQLiteParameter("ilosc", ilosc));
SQLiteDataReader sql_czytniki = cmd.ExecuteReader();
int jj = 0;
StringBuilder tekst = new StringBuilder();
while (sql_czytniki.Read())
{
string zdanie = Convert.ToString(sql_czytniki["zdanie"]);
tekst.Append(zdanie);
jj++;
}


string tresc = tekst.ToString();
string postData = "tresc=" + tresc + "&slowa=&tytul=" + title + "";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);

WebRequest request = WebRequest.Create(adres + "dodaj.php");
request.Credentials = CredentialCache.DefaultCredentials;
((HttpWebRequest)request).UserAgent = "Example code";
request.Method = "POST";
request.ContentLength = byteArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
request.GetResponse();



progressBar1.Value = progressBar1.Value + 1;
}
MessageBox.Show("Generowanie zakończone pomyślnie.", "Informacja", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception s)
{
MessageBox.Show(s.Message, "Wystąpił błąd", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Ten kod losuje z bazy tekst, oraz tytuł i dodaje pod wskazany adres, problem jest taki, że jak w tracBar1 ustawie, że ma dodać 1000 tekstów, to dodaje tylko dwa, i po czasie jest komunikat: The operation has timed out. Widzi ktoś, coś nie tak w kodzie?

Na localhost dodaje elegancko bez problemu, na serwer www w sieci, już nie :(Paweł Cyrklaf edytował(a) ten post dnia 23.08.11 o godzinie 01:03

konto usunięte

Temat: Problem, choć brak błędu

A na czym leci ten timeout? Na dostępie do bazy czy na wykonaniu zapytania HTTP?

Stawiam, że na bazie. Lecisz na jednym połączeniu, które trzymasz cały czas otwarte. Jeśli SQLite wspiera pooling, twórz połączenie za każdym obrotem pętli. Ponieważ będzie brane z puli będzie to szybkie (powinno być). Ewentualnie zobacz czy SQLite umożliwia ustawienie dłuższego timeoutu na otwarte połączenie.

BTW. Chyba powinieneś zwalniać zasoby SQLowe.

konto usunięte

Temat: Problem, choć brak błędu

Ja obstawiam, że serwer HTTP wykrywa flood'a i przestaje odpowiadać na żądania.

Podałeś trochę za mało informacji.
Debuguj i sprawdź gdzie program się zatrzymuje.

konto usunięte

Temat: Problem, choć brak błędu

Przy debugowaniu jedyny błąd/komunikat to:
Could not load file or assembly 'System.Data.SQLite.dll' or one of its dependencies. Procedura inicjowania biblioteki dołączanej dynamicznie (DLL) nie powiodła się. (Exception from HRESULT: 0x8007045A)

Przerobiłem kod z http post na:
try{
string tresc = tekst.ToString();
string postData = "tresc=" + tresc + "&slowa=&tytul="+tytul+"";
byte[] byteArray = Encoding.UTF8.GetBytes(postData);

WebRequest request = WebRequest.Create(adres + "dodaj.php");
request.Credentials = CredentialCache.DefaultCredentials;
((HttpWebRequest)request).UserAgent = "Example code";
request.Method = "POST";
request.ContentLength = byteArray.Length;
request.ContentType = "application/x-www-form-urlencoded";
Stream dataStream = request.GetRequestStream();
dataStream.Write(byteArray, 0, byteArray.Length);
dataStream.Close();
request.GetResponse();
}
catch (Exception e)
{
MessageBox.Show(e.Message, "Wystąpił błąd dodawania", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

I tutaj wywala mi wyjątek, "The operation has timed out"Paweł Cyrklaf edytował(a) ten post dnia 24.08.11 o godzinie 00:13

konto usunięte

Temat: Problem, choć brak błędu

Z tego wynika, że błąd nie jest w kodzie.
Sprawdź zgodność wersji dll, może masz inną wersję zadeklarowaną w web.config a inną w /bin lub w GAC.
Nie szukaj błędu w kodzie ale w konfiguracji.

konto usunięte

Temat: Problem, choć brak błędu

Już sobie poradziłem :)
Tutaj jest rozwiązanie: http://www.velocityreviews.com/forums/t112367-httpwebr... Paweł Cyrklaf edytował(a) ten post dnia 24.08.11 o godzinie 00:39

Następna dyskusja:

problem z serializacja cdata




Wyślij zaproszenie do